AdvancedPlaceSearchElement
एचटीएमएल एलिमेंट है. इसकी मदद से, जगहों की खोज के नतीजे सूची में दिखते हैं. gmp-advanced-place-search एलिमेंट को कॉन्फ़िगर करने के दो तरीके हैं:
-
किसी दिए गए इलाके में, किसी खास तरह की जगहें खोजने के लिए,
आस-पास की जगहें खोजने की सुविधा का इस्तेमाल करें. इसके लिए, खोज के नतीजे दिखाने के लिए
PlaceNearbySearchRequestElementका इस्तेमाल करें. -
किसी दिए गए इलाके में, टेक्स्ट क्वेरी के आधार पर जगहें खोजने के लिए,
टेक्स्ट से खोजने की सुविधा का इस्तेमाल करें. इसके लिए,
खोज के नतीजे दिखाने के लिए
PlaceTextSearchRequestElementका इस्तेमाल करें.
आस-पास की जगहें खोजने और टेक्स्ट से खोजने की सुविधा में, कार्रवाई के बटन को पसंद के मुताबिक बनाने, समीक्षाओं और मीडिया को फ़िल्टर करने, जगह की एट्रिब्यूशन को कॉन्फ़िगर करने, और जगह चुनने और गड़बड़ियों को ठीक करने जैसी ऐडवांस सुविधाएं मिलती हैं.
आस-पास की जगहें खोजने की सुविधा
किसी जगह के टाइप के लिए, आस-पास की जगहें खोजने के नतीजे देखने के लिए, मेन्यू से जगह का टाइप चुनें.
आस-पास की जगहें खोजने की सुविधा, मुख्य रूप से जगह के टाइप और जगह के हिसाब से खोज करने के लिए कॉन्फ़िगर की जाती है.
साथ ही, नतीजों को दूरी या लोकप्रियता के हिसाब से रैंक किया जा सकता है. इसके लिए, rankPreference प्रॉपर्टी का इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए,
PlaceNearbySearchRequestElement
क्लास के रेफ़रंस से जुड़ा दस्तावेज़ देखें.
इस उदाहरण में, उपयोगकर्ता की चुनी गई जगह के टाइप के हिसाब से, आस-पास की जगहें खोजने पर, जगहें खोजने वाला ऐडवांस एलिमेंट दिखता है. इसमें, चुनी गई जगह के लिए, AdvancedPlaceDetailsCompactElement भी दिखता है.
मैप में, ऐडवांस Place Search एलिमेंट जोड़ने के लिए, एचटीएमएल पेज में,
gmp-advanced-place-search एलिमेंट जोड़ें. इसमें, नेस्ट किया गया
gmp-place-nearby-search-request एलिमेंट भी जोड़ें.
<gmp-advanced-place-search selectable>
<!-- Nearby search requests require a location restriction to return results. Often set programmatically. -->
<gmp-place-nearby-search-request max-result-count="5"></gmp-place-nearby-search-request>
<template slot="details-item">
<gmp-place-all-content></gmp-place-all-content>
</template>
</gmp-advanced-place-search>कोड का पूरा उदाहरण देखें
TypeScript
// Query selectors for various elements in the HTML file. const map = document.querySelector<google.maps.MapElement>('gmp-map')!; const placeSearch = document.querySelector< HTMLElement & { places?: google.maps.places.Place[] } >('gmp-advanced-place-search')!; const placeSearchQuery = document.querySelector< HTMLElement & { locationRestriction?: { center: google.maps.LatLng | google.maps.LatLngLiteral; radius: number; }; includedTypes?: string[]; } >('gmp-place-nearby-search-request')!; const placeDetails = document.querySelector<HTMLElement>( 'gmp-advanced-place-details-compact' )!; const placeRequest = document.querySelector< HTMLElement & { place?: google.maps.places.Place } >('gmp-place-details-place-request')!; const typeSelect = document.querySelector<HTMLSelectElement>('.type-select')!; // Global variables for the map, markers, and info window. const markers = new Map<string, google.maps.marker.AdvancedMarkerElement>(); let infoWindow: google.maps.InfoWindow; // The init function is called when the page loads. async function init(): Promise<void> { // Import the necessary libraries from the Google Maps API. const [{ InfoWindow }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('places'), ]); // Create a new info window and set its content to the place details element. placeDetails.remove(); // Hide the place details element because it is not needed until the info window opens infoWindow = new InfoWindow({ content: placeDetails, ariaLabel: 'Place Details', }); // Set the map options. map.innerMap.setOptions({ clickableIcons: false, mapTypeControl: false, streetViewControl: false, }); // Add event listeners to the type select and place search elements. typeSelect.addEventListener('change', () => { searchPlaces(); }); placeSearch.addEventListener('gmp-select', (event: Event) => { const place = (event as Event & { place?: google.maps.places.Place }) .place; if (place?.id) { markers.get(place.id)?.click(); } }); placeSearch.addEventListener('gmp-load', () => { void addMarkers(); }); searchPlaces(); } // The searchPlaces function is called when the user changes the type select or when the page loads. function searchPlaces() { // Close the info window and clear the markers. infoWindow.close(); for (const marker of markers.values()) { marker.remove(); } markers.clear(); // Set the place search query and add an event listener to the place search element. if (typeSelect.value) { const center = map.center!; placeSearchQuery.locationRestriction = { center, radius: 50000, // 50km radius }; placeSearchQuery.includedTypes = [typeSelect.value]; } } // The addMarkers function is called when the place search element loads. async function addMarkers() { // Import the necessary libraries from the Google Maps API. const [{ AdvancedMarkerElement }, { LatLngBounds }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('core'), ]); const bounds = new LatLngBounds(); if (!placeSearch.places || placeSearch.places.length === 0) { return; } for (const place of placeSearch.places) { if (!place.location) continue; const marker = new AdvancedMarkerElement({ map: map.innerMap, position: place.location, collisionBehavior: 'REQUIRED_AND_HIDES_OPTIONAL', }); markers.set(place.id, marker); bounds.extend(place.location); marker.addListener('click', () => { placeRequest.place = place; infoWindow.open(map.innerMap, marker); }); } map.innerMap.fitBounds(bounds); } void init();
JavaScript
// Query selectors for various elements in the HTML file. const map = document.querySelector('gmp-map'); const placeSearch = document.querySelector('gmp-advanced-place-search'); const placeSearchQuery = document.querySelector( 'gmp-place-nearby-search-request' ); const placeDetails = document.querySelector( 'gmp-advanced-place-details-compact' ); const placeRequest = document.querySelector('gmp-place-details-place-request'); const typeSelect = document.querySelector('.type-select'); // Global variables for the map, markers, and info window. const markers = new Map(); let infoWindow; // The init function is called when the page loads. async function init() { // Import the necessary libraries from the Google Maps API. const [{ InfoWindow }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('places'), ]); // Create a new info window and set its content to the place details element. placeDetails.remove(); // Hide the place details element because it is not needed until the info window opens infoWindow = new InfoWindow({ content: placeDetails, ariaLabel: 'Place Details', }); // Set the map options. map.innerMap.setOptions({ clickableIcons: false, mapTypeControl: false, streetViewControl: false, }); // Add event listeners to the type select and place search elements. typeSelect.addEventListener('change', () => { searchPlaces(); }); placeSearch.addEventListener('gmp-select', (event) => { const place = event.place; if (place?.id) { markers.get(place.id)?.click(); } }); placeSearch.addEventListener('gmp-load', () => { void addMarkers(); }); searchPlaces(); } // The searchPlaces function is called when the user changes the type select or when the page loads. function searchPlaces() { // Close the info window and clear the markers. infoWindow.close(); for (const marker of markers.values()) { marker.remove(); } markers.clear(); // Set the place search query and add an event listener to the place search element. if (typeSelect.value) { const center = map.center; placeSearchQuery.locationRestriction = { center, radius: 50000, // 50km radius }; placeSearchQuery.includedTypes = [typeSelect.value]; } } // The addMarkers function is called when the place search element loads. async function addMarkers() { // Import the necessary libraries from the Google Maps API. const [{ AdvancedMarkerElement }, { LatLngBounds }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('core'), ]); const bounds = new LatLngBounds(); if (!placeSearch.places || placeSearch.places.length === 0) { return; } for (const place of placeSearch.places) { if (!place.location) continue; const marker = new AdvancedMarkerElement({ map: map.innerMap, position: place.location, collisionBehavior: 'REQUIRED_AND_HIDES_OPTIONAL', }); markers.set(place.id, marker); bounds.extend(place.location); marker.addListener('click', () => { placeRequest.place = place; infoWindow.open(map.innerMap, marker); }); } map.innerMap.fitBounds(bounds); } void init();
CSS
html, body { height: 100%; margin: 0; } body { display: flex; flex-direction: column; font-family: Arial, Helvetica, sans-serif; } .container { display: flex; height: 100vh; width: 100%; } gmp-map { flex-grow: 1; } .ui-panel { width: 400px; margin-left: 20px; margin-top: 10px; overflow-y: auto; font-family: Arial, Helvetica, sans-serif; } .list-container { display: flex; flex-direction: column; } gmp-place-search { width: 100%; margin: 0; border: none; color-scheme: light; }
HTML
<!doctype html>
<html>
<head>
<title>Place Search Nearby with Google Maps</title>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="module" src="./index.js"></script>
<script>
// prettier-ignore
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
key: "GOOGLE_MAPS_API_KEY",
v: "beta"
});
</script>
</head>
<body>
<div class="container">
<!-- map-id is required to use advanced markers. See https://developers.google.com/maps/documentation/javascript/map-ids/mapid-over. -->
<gmp-map center="-37.813,144.963" zoom="16" map-id="DEMO_MAP_ID">
</gmp-map>
<div class="ui-panel">
<div class="controls">
<label for="type-select">
Select a place type:
<select id="type-select" class="type-select">
<option value="restaurant">Restaurant</option>
<option value="cafe" selected>Cafe</option>
<option value="electric_vehicle_charging_station">
EV charging station
</option>
</select>
</label>
</div>
<div class="list-container">
<gmp-advanced-place-search selectable>
<gmp-place-all-content></gmp-place-all-content>
<gmp-place-nearby-search-request
max-result-count="5"></gmp-place-nearby-search-request>
</gmp-advanced-place-search>
</div>
</div>
</div>
<!--
The gmp-advanced-place-details-compact element is styled inline because it is
conditionally rendered and moved into the info window, which is
part of the map's shadow DOM.
-->
<gmp-advanced-place-details-compact
orientation="horizontal"
truncation-preferred
style="
width: 400px;
padding: 0;
margin: 0;
border: none;
background-color: transparent;
color-scheme: light;
">
<gmp-place-details-place-request></gmp-place-details-place-request>
<gmp-place-media></gmp-place-media>
<gmp-place-rating></gmp-place-rating>
<gmp-place-price></gmp-place-price>
<gmp-place-accessible-entrance-icon></gmp-place-accessible-entrance-icon>
<gmp-place-open-now-status></gmp-place-open-now-status>
<gmp-place-attribution
light-scheme-color="gray"
dark-scheme-color="white"></gmp-place-attribution>
</gmp-advanced-place-details-compact>
</body>
</html>
select एलिमेंट की मदद से, उपयोगकर्ता मेन्यू से जगह का टाइप चुन सकता है. आसानी के लिए, सिर्फ़ तीन तरह की जगहें दिखाई गई हैं: रेस्टोरेंट, कैफ़े,
और ईवी चार्जिंग स्टेशन.
<div class="controls">
<label for="type-select">
Select a place type:
<select id="type-select" class="type-select">
<option value="restaurant">Restaurant</option>
<option value="cafe" selected>Cafe</option>
<option value="electric_vehicle_charging_station">
EV charging station
</option>
</select>
</label>
</div>
जब उपयोगकर्ता मेन्यू से जगह का टाइप चुनता है, तो
gmp-place-nearby-search-request एलिमेंट अपडेट हो जाता है. इसके बाद,
जगहें खोजने वाला ऐडवांस एलिमेंट, नतीजे दिखाता है.
टेक्स्ट से खोजने की सुविधा
इनपुट फ़ील्ड में, खोज के लिए कोई शब्द डालें. इसके बाद, उस शब्द से मेल खाने वाली जगहों की सूची पाने के लिए, खोजें बटन पर क्लिक करें.
टेक्स्ट से खोजने की सुविधा, मुख्य रूप से टेक्स्ट क्वेरी और
जगह के हिसाब से खोज करने के लिए कॉन्फ़िगर की जाती है. साथ ही, नतीजों को कीमत के लेवल, रेटिंग, और फ़िलहाल खुले होने के हिसाब से बेहतर बनाया जा सकता है. नतीजों को दूरी या लोकप्रियता के हिसाब से रैंक भी किया जा सकता है
इसके लिए rankPreference प्रॉपर्टी का इस्तेमाल करें. ज़्यादा जानकारी के लिए,
PlaceTextSearchRequestElement
क्लास के रेफ़रंस से जुड़ा दस्तावेज़ देखें.
इस उदाहरण में, उपयोगकर्ता के टेक्स्ट इनपुट के जवाब में, Place Search का ऐडवांस एलिमेंट दिखता है. इसमें, चुनी गई जगह के लिए, AdvancedPlaceDetailsCompactElement भी दिखता है.
मैप में, ऐडवांस Place Search एलिमेंट जोड़ने के लिए, एचटीएमएल पेज में, gmp-advanced-place-search एलिमेंट जोड़ें. इसमें, नेस्ट किया गया gmp-place-text-search-request एलिमेंट भी जोड़ें.
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request max-result-count="5"></gmp-place-text-search-request>
<template slot="details-item">
<gmp-place-all-content></gmp-place-all-content>
</template>
</gmp-advanced-place-search>
input एलिमेंट की मदद से, उपयोगकर्ता खोज के लिए टेक्स्ट डाल सकता है.
<div class="controls">
<input
type="text"
id="query-input"
class="query-input"
placeholder="Search for a place"
value="cafe" />
<button id="search-button" class="search-button">
Search
</button>
</div>
जब उपयोगकर्ता खोजें बटन पर क्लिक करता है, तो खोज फ़ंक्शन चलता है.
इसके बाद, gmp-place-text-search-request एलिमेंट अपडेट हो जाता है. साथ ही, जगहें खोजने वाला ऐडवांस एलिमेंट, नतीजे दिखाता है.
कोड का पूरा उदाहरण देखें
TypeScript
// Query selectors for various elements in the HTML file. const map = document.querySelector<google.maps.MapElement>('gmp-map')!; const placeSearch = document.querySelector< HTMLElement & { places?: google.maps.places.Place[] } >('gmp-advanced-place-search')!; const placeSearchQuery = document.querySelector< HTMLElement & { textQuery?: string; locationBias?: google.maps.LatLng | google.maps.LatLngLiteral; } >('gmp-place-text-search-request')!; const placeDetails = document.querySelector<HTMLElement>( 'gmp-advanced-place-details-compact' )!; const placeRequest = document.querySelector< HTMLElement & { place?: google.maps.places.Place } >('gmp-place-details-place-request')!; const queryInput = document.querySelector<HTMLInputElement>('.query-input')!; const searchButton = document.querySelector<HTMLElement>('.search-button')!; // Global variables for the map, markers, and info window. const markers = new Map<string, google.maps.marker.AdvancedMarkerElement>(); let infoWindow: google.maps.InfoWindow; // The init function is called when the page loads. async function init(): Promise<void> { // Import the necessary libraries from the Google Maps API. const [{ InfoWindow }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('places'), ]); // Create a new info window and set its content to the place details element. placeDetails.remove(); // Hide the place details element because it is not needed until the info window opens infoWindow = new InfoWindow({ content: placeDetails, ariaLabel: 'Place Details', }); // Set the map options. map.innerMap.setOptions({ clickableIcons: false, mapTypeControl: false, streetViewControl: false, }); // Add event listeners to the query input and place search elements. searchButton.addEventListener('click', () => { searchPlaces(); }); queryInput.addEventListener('keydown', (event: KeyboardEvent) => { if (event.key === 'Enter') { searchPlaces(); } }); placeSearch.addEventListener('gmp-select', (event: Event) => { const place = (event as Event & { place?: google.maps.places.Place }) .place; if (place?.id) { markers.get(place.id)?.click(); } }); placeSearch.addEventListener('gmp-load', () => { void addMarkers(); }); searchPlaces(); } // The searchPlaces function is called when the user changes the query input or when the page loads. function searchPlaces() { // Close the info window and clear the markers. infoWindow.close(); for (const marker of markers.values()) { marker.remove(); } markers.clear(); // Set the place search query and add an event listener to the place search element. if (queryInput.value) { const center = map.center; if (center) { placeSearchQuery.locationBias = center; } // The textQuery property is required for the search element to load. // Any other configured properties will be ignored if textQuery is not set. placeSearchQuery.textQuery = queryInput.value; } } // The addMarkers function is called when the place search element loads. async function addMarkers() { // Import the necessary libraries from the Google Maps API. const [{ AdvancedMarkerElement }, { LatLngBounds }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('core'), ]); const bounds = new LatLngBounds(); if (!placeSearch.places || placeSearch.places.length === 0) { return; } for (const place of placeSearch.places) { if (!place.location) { continue; } const marker = new AdvancedMarkerElement({ map: map.innerMap, position: place.location, collisionBehavior: 'REQUIRED_AND_HIDES_OPTIONAL', }); markers.set(place.id, marker); bounds.extend(place.location); marker.addListener('click', () => { placeRequest.place = place; infoWindow.open(map.innerMap, marker); }); } map.innerMap.fitBounds(bounds); } void init();
JavaScript
// Query selectors for various elements in the HTML file. const map = document.querySelector('gmp-map'); const placeSearch = document.querySelector('gmp-advanced-place-search'); const placeSearchQuery = document.querySelector( 'gmp-place-text-search-request' ); const placeDetails = document.querySelector( 'gmp-advanced-place-details-compact' ); const placeRequest = document.querySelector('gmp-place-details-place-request'); const queryInput = document.querySelector('.query-input'); const searchButton = document.querySelector('.search-button'); // Global variables for the map, markers, and info window. const markers = new Map(); let infoWindow; // The init function is called when the page loads. async function init() { // Import the necessary libraries from the Google Maps API. const [{ InfoWindow }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('places'), ]); // Create a new info window and set its content to the place details element. placeDetails.remove(); // Hide the place details element because it is not needed until the info window opens infoWindow = new InfoWindow({ content: placeDetails, ariaLabel: 'Place Details', }); // Set the map options. map.innerMap.setOptions({ clickableIcons: false, mapTypeControl: false, streetViewControl: false, }); // Add event listeners to the query input and place search elements. searchButton.addEventListener('click', () => { searchPlaces(); }); queryInput.addEventListener('keydown', (event) => { if (event.key === 'Enter') { searchPlaces(); } }); placeSearch.addEventListener('gmp-select', (event) => { const place = event.place; if (place?.id) { markers.get(place.id)?.click(); } }); placeSearch.addEventListener('gmp-load', () => { void addMarkers(); }); searchPlaces(); } // The searchPlaces function is called when the user changes the query input or when the page loads. function searchPlaces() { // Close the info window and clear the markers. infoWindow.close(); for (const marker of markers.values()) { marker.remove(); } markers.clear(); // Set the place search query and add an event listener to the place search element. if (queryInput.value) { const center = map.center; if (center) { placeSearchQuery.locationBias = center; } // The textQuery property is required for the search element to load. // Any other configured properties will be ignored if textQuery is not set. placeSearchQuery.textQuery = queryInput.value; } } // The addMarkers function is called when the place search element loads. async function addMarkers() { // Import the necessary libraries from the Google Maps API. const [{ AdvancedMarkerElement }, { LatLngBounds }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('core'), ]); const bounds = new LatLngBounds(); if (!placeSearch.places || placeSearch.places.length === 0) { return; } for (const place of placeSearch.places) { if (!place.location) { continue; } const marker = new AdvancedMarkerElement({ map: map.innerMap, position: place.location, collisionBehavior: 'REQUIRED_AND_HIDES_OPTIONAL', }); markers.set(place.id, marker); bounds.extend(place.location); marker.addListener('click', () => { placeRequest.place = place; infoWindow.open(map.innerMap, marker); }); } map.innerMap.fitBounds(bounds); } void init();
CSS
html, body { height: 100%; margin: 0; } body { display: flex; flex-direction: column; font-family: Arial, Helvetica, sans-serif; } .container { display: flex; height: 100vh; width: 100%; } gmp-map { flex-grow: 1; } .ui-panel { width: 400px; margin-left: 20px; margin-right: 20px; margin-top: 10px; overflow-y: auto; font-family: Arial, Helvetica, sans-serif; } .list-container { display: flex; flex-direction: column; } gmp-place-search { width: 100%; margin: 0; border: none; color-scheme: light; } .query-input { width: 100%; padding: 8px; margin-bottom: 10px; box-sizing: border-box; } .search-button { width: 100%; padding: 8px; margin-bottom: 10px; box-sizing: border-box; background-color: #1a73e8; color: white; border: none; cursor: pointer; } .search-button:hover, .search-button:focus-visible { background-color: #1765cc; }
HTML
<!doctype html>
<html>
<head>
<title>Place Text Search with Google Maps</title>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="module" src="./index.js"></script>
<script>
// prettier-ignore
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
key: "GOOGLE_MAPS_API_KEY",
v: "beta"
});
</script>
</head>
<body>
<div class="container">
<div class="ui-panel">
<div class="controls">
<input
type="text"
id="query-input"
class="query-input"
placeholder="Search for a place"
value="cafe" />
<button class="search-button">Search</button>
</div>
<div class="list-container">
<gmp-advanced-place-search selectable>
<gmp-place-all-content></gmp-place-all-content>
<gmp-place-text-search-request
max-result-count="5"></gmp-place-text-search-request>
</gmp-advanced-place-search>
</div>
</div>
<!-- map-id is required to use advanced markers. See https://developers.google.com/maps/documentation/javascript/map-ids/mapid-over. -->
<gmp-map center="-37.813,144.963" zoom="16" map-id="DEMO_MAP_ID">
</gmp-map>
</div>
<!--
The gmp-advanced-place-details-compact element is styled inline because it is
conditionally rendered and moved into the info window, which is
part of the map's shadow DOM.
-->
<gmp-advanced-place-details-compact
orientation="horizontal"
truncation-preferred
style="
width: 400px;
padding: 0;
margin: 0;
border: none;
background-color: transparent;
color-scheme: light;
">
<gmp-place-details-place-request></gmp-place-details-place-request>
<gmp-place-name></gmp-place-name>
<gmp-place-media></gmp-place-media>
<gmp-place-rating></gmp-place-rating>
<gmp-place-price></gmp-place-price>
<gmp-place-accessible-entrance-icon></gmp-place-accessible-entrance-icon>
<gmp-place-open-now-status></gmp-place-open-now-status>
<gmp-place-attribution
light-scheme-color="gray"
dark-scheme-color="white"></gmp-place-attribution>
</gmp-advanced-place-details-compact>
</body>
</html>ऐडवांस सुविधाएं
कार्रवाई के बटन को पसंद के मुताबिक बनाना
जगहें खोजने वाले ऐडवांस
कॉम्पोनेंट के
<template slot="details-item"> एलिमेंट में, कार्रवाई के बटन को चाइल्ड के तौर पर जोड़ें. नेविगेशन से जुड़े स्टैंडर्ड कनेक्शन के लिए, <gmp-place-link> का इस्तेमाल करें. साथ ही, action
एट्रिब्यूट साफ़ तौर पर तय करें. आपके पास, slot एट्रिब्यूट तय करने का विकल्प होता है. पहले से तय की गई मान्य कार्रवाइयां ये हैं: open-website,
open-directions, open-map, और call. अगर
slot एट्रिब्यूट को छोड़ दिया जाता है, तो यह डिफ़ॉल्ट रूप से
action-main पर सेट हो जाता है.
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request text-query="pizza" max-result-count="5"></gmp-place-text-search-request>
<template slot="details-item">
<gmp-place-name></gmp-place-name>
<gmp-place-link action="open-website" target="_blank"></gmp-place-link>
<gmp-place-link action="open-directions" slot="action-corner"></gmp-place-link>
</template>
</gmp-advanced-place-search>समीक्षाओं और मीडिया को फ़िल्टर करना
इस कोड सैंपल में, सिर्फ़ वे मीडिया और समीक्षाएं दिखती हैं जिनमें "कॉफ़ी" का ज़िक्र है.
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request text-query="pizza" max-result-count="5"></gmp-place-text-search-request>
<template slot="details-item">
<gmp-place-name></gmp-place-name>
<gmp-place-media query="coffee"></gmp-place-media>
<gmp-place-reviews query="coffee" rank-preference="newest"></gmp-place-reviews>
</template>
</gmp-advanced-place-search>जगह की एट्रिब्यूशन को कॉन्फ़िगर करना
विज़ुअल एट्रिब्यूशन को कॉन्फ़िगर करने के लिए,
<gmp-place-attribution> एलिमेंट जोड़ें. इससे, Maps
API के डेटा एट्रिब्यूशन के सभी कॉन्फ़िगरेशन दिखते हैं. जैसे, किसी फ़ोटो या समीक्षा का सोर्स.
इसे <template> के डायरेक्ट सिबलिंग के तौर पर जोड़ा जाना चाहिए.
<template> एलिमेंट
के अंदर मौजूद एट्रिब्यूशन को अनदेखा कर दिया जाएगा.
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request text-query="pizza" max-result-count="5"></gmp-place-text-search-request>
<template slot="details-item">
<gmp-place-name></gmp-place-name>
</template>
<gmp-place-attribution light-scheme-color="black" dark-scheme-color="gray"></gmp-place-attribution>
</gmp-advanced-place-search>जगह चुनने और गड़बड़ियों को ठीक करना
जब selectable एट्रिब्यूट मौजूद होता है, तब उपयोगकर्ता की चुनी गई जगह को वापस पाने के लिए,
gmp-select इवेंट को सुना जा सकता है. जगह का डेटा फ़ेच न होने पर, स्थितियों को आसानी से मैनेज करने के लिए, gmp-error इवेंट को भी सुना जा सकता है.
const searchElement = document.querySelector('gmp-advanced-place-search'); searchElement.addEventListener('gmp-select', (e) => { console.log('User selected place: ', e.place); }); searchElement.addEventListener('gmp-error', (e) => { // e.detail contains the structured error payload console.error('Failed to load places: ', e.detail.error); });