«عنصر جزئیات پیشرفته مکان» و «عنصر فشرده جزئیات پیشرفته مکان» عناصر HTML هستند که جزئیات مکان را ارائه میدهند:
-
AdvancedPlaceDetailsElementاز همه دادههای «مکان» قابلتجسم پشتیبانی میکند و ممکن است شامل چند عکس باشد. -
AdvancedPlaceDetailsCompactElementطوری طراحی شده است که حداقل فضا را اشغال کند و مجموعه مختصری از اطلاعات مربوط به مکان را نمایش دهد، ازجمله نام، نشانی، ردهبندی، و غیره. همچنین ممکن است شامل یک عکس باشد.
هر دو «عنصر جزئیات پیشرفته مکان» و «عنصر فشرده جزئیات پیشرفته مکان» ویژگیهای پیشرفته یکسانی ارائه میدهند، ازجمله سفارشیسازی دکمههای کنش، حذف نام مکان، و فیلتر کردن مرورها و رسانهها.
از ابزار سفارشیسازی استفاده کنید تا ببینید مجموعههای مختلف ویژگیها چگونه بر ظاهر عنصر «جزئیات مکانها» تأثیر میگذارند و به کد در HTML/CSS، Kotlin/XML، و Swift دسترسی پیدا کنید.
عنصر جزئیات جای پیشرفته
روی نشانگری در نقشه کلیک کنید تا جزئیات مکان آن را در «عنصر جزئیات مکان پیشرفته» ببینید.
AdvancedPlaceDetailsElement
از طیف گستردهای از عناصر محتوا پشتیبانی میکند، ازجمله ساعت کاری کامل،
وبسایت، شماره تلفن،
خلاصه با پشتیبانی هوش مصنوعی
با بازگشت به خلاصه سرمقالهای، نکات برجسته خاص نوع، مرورها،
خلاصه مرور با پشتیبانی هوش مصنوعی، Plus Code، و فهرستهای ویژگی.
برای نمایش جزئیات مکان روی نقشه، عنصر
gmp-advanced-place-details را به عنصر
gmp-map در صفحه HTML اضافه کنید. برای انتخاب مکان،
عنصر فرعی gmp-place-details-place-request را اضافه کنید. این
میتواند
شیء مکان،
شناسه مکان، یا نام منبع «مکان» باشد:
<gmp-map center="47.759737, -122.250632" zoom="16" map-id="DEMO_MAP_ID">
<div class="widget-container" slot="control-inline-start-block-start">
<gmp-advanced-place-details>
<gmp-place-details-place-request place="places/ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-all-content></gmp-place-all-content>
</gmp-advanced-place-details>
</div>
<gmp-advanced-marker></gmp-advanced-marker>
</gmp-map>پیکربندی محتوا
میتوانید محتوای مکان خاصی را که توسط عنصر gmp-advanced-place-details نمایش داده میشود با تودرتو کردن عناصر فرزند برای انتخاب و پیکربندی جزئیات مکان کنترل کنید، همانطور که در این مثال نشان داده شده است:
<gmp-advanced-place-details>
<gmp-place-details-place-request
place="places/ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-name></gmp-place-name>
<gmp-place-address></gmp-place-address>
<gmp-place-rating></gmp-place-rating>
<gmp-place-type></gmp-place-type>
<gmp-place-price></gmp-place-price>
<gmp-place-accessible-entrance-icon></gmp-place-accessible-entrance-icon>
<gmp-place-opening-hours></gmp-place-opening-hours>
<gmp-place-website></gmp-place-website>
<gmp-place-phone-number></gmp-place-phone-number>
<gmp-place-summary></gmp-place-summary>
<gmp-place-type-specific-highlights></gmp-place-type-specific-highlights>
<gmp-place-review-summary></gmp-place-review-summary>
<gmp-place-reviews></gmp-place-reviews>
<gmp-place-feature-list></gmp-place-feature-list>
<gmp-place-attribution></gmp-place-attribution>
</gmp-advanced-place-details>
هر عنصر محتوای فرزند جزئیات مکان مربوطه را برای نمایش انتخاب میکند:
gmp-place-address
نشانی مکان را انتخاب میکند،
gmp-place-price
سطح قیمت مکان را انتخاب میکند، و غیره. عناصر
gmp-place-summary
و
gmp-place-review-summary
بهترتیب خلاصهای
با بهرهگیری از هوش مصنوعی
از مکان و مرورهای آن ارائه میدهند. ترتیب عناصر فرزند
مهم نیست، زیرا جزئیات انتخابشده همیشه با ترتیبی ثابت و ازپیشتعریفشده
ارائه میشوند.
برخیاز این عناصر را میتوان بااستفاده از مشخصههای مختص محتوا بیشتر پیکربندی کرد:
-
از عنصر
gmp-place-mediaبرای نمایش یک عکس استفاده میشود و شامل مشخصهlightbox-preferredاست که با کلیک کردن روی آن، عکس در لایتباکس باز میشود. «لایتباکس» بهطور پیشفرض غیرفعال است. -
از عنصر
gmp-place-attributionبرای نمایش پیکربندیهای اسناد دادههای Maps API، مانند منبع عکس یا مرور، استفاده میشود. از مشخصههایlight-scheme-colorوdark-scheme-colorبرای تنظیم رنگ نوشتار انتساب در حالت روشن و تاریک استفاده میشود.
برای کسب اطلاعات بیشتر درباره همه عناصر محتوای پشتیبانیشده، به سند مرجع سفارشیسازی محتوای ابزاره مکان مراجعه کنید.
برای سادگی، میتوانید از
gmp-place-all-content
برای نمایش همه جزئیات موجود در عنصر «جزئیات پیشرفته مکان» یا
با
gmp-place-standard-content
برای نمایش پیکربندی استاندارد استفاده کنید.
پیکربندی ظاهر
محدوده عرض توصیهشده برای عنصر
gmp-advanced-place-details بین ۲۵۰ تا ۴۰۰ پیکسل است. عرضهای کمتر از ۲۵۰ پیکسل ممکن است بهدرستی نمایش داده نشوند. ارتفاع را متناسب با برنامهتان تنظیم کنید. عنصر «جزئیات پیشرفته مکان» بهگونهای طراحی شده است که درصورت نیاز در فضای اختصاصدادهشده پیمایش کند.
عنصر gmp-advanced-place-details همچنین از انواع ویژگیهای CSS سفارشی برای پیکربندی رنگها و قلمهای عنصر پشتیبانی میکند. برای جزئیات بیشتر،
سبک سفارشی کیت میانای کاربر «جاها»
را ببینید.
دیدن نمونه کد کامل
TypeScript
// Use querySelector to select elements for interaction. const map = document.querySelector<google.maps.MapElement>('gmp-map')!; const placeDetails = document.querySelector< HTMLElement & { place?: google.maps.places.Place } >('gmp-advanced-place-details')!; const placeDetailsRequest = document.querySelector<HTMLElement>( 'gmp-place-details-place-request' )!; const marker = document.querySelector<google.maps.marker.AdvancedMarkerElement>( 'gmp-advanced-marker' )!; async function init(): Promise<void> { // Request needed libraries. await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), google.maps.importLibrary('places'), ]); // Hide the map type control. map.innerMap.setOptions({ mapTypeControl: false }); // Function to update map and marker based on place details const updateMapAndMarker = () => { if (placeDetails.place?.location) { map.innerMap.panTo(placeDetails.place.location); map.innerMap.setZoom(16); // Set zoom after panning if needed marker.position = placeDetails.place.location; marker.collisionBehavior = 'REQUIRED_AND_HIDES_OPTIONAL'; marker.style.display = 'block'; } }; // Set up map once widget is loaded. placeDetails.addEventListener('gmp-load', () => { updateMapAndMarker(); }); // Add an event listener to handle clicks. map.innerMap.addListener( 'click', (event: google.maps.MapMouseEvent | google.maps.IconMouseEvent) => { marker.position = null; event.stop(); if ('placeId' in event && event.placeId) { // Fire when the user clicks a POI. placeDetailsRequest.setAttribute( 'place', `places/${event.placeId}` ); updateMapAndMarker(); } else { // Fire when the user clicks the map (not on a POI). console.log('No place was selected.'); marker.style.display = 'none'; } } ); } void init();
JavaScript
// Use querySelector to select elements for interaction. const map = document.querySelector('gmp-map'); const placeDetails = document.querySelector('gmp-advanced-place-details'); const placeDetailsRequest = document.querySelector( 'gmp-place-details-place-request' ); const marker = document.querySelector('gmp-advanced-marker'); async function init() { // Request needed libraries. await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), google.maps.importLibrary('places'), ]); // Hide the map type control. map.innerMap.setOptions({ mapTypeControl: false }); // Function to update map and marker based on place details const updateMapAndMarker = () => { if (placeDetails.place?.location) { map.innerMap.panTo(placeDetails.place.location); map.innerMap.setZoom(16); // Set zoom after panning if needed marker.position = placeDetails.place.location; marker.collisionBehavior = 'REQUIRED_AND_HIDES_OPTIONAL'; marker.style.display = 'block'; } }; // Set up map once widget is loaded. placeDetails.addEventListener('gmp-load', () => { updateMapAndMarker(); }); // Add an event listener to handle clicks. map.innerMap.addListener('click', (event) => { marker.position = null; event.stop(); if ('placeId' in event && event.placeId) { // Fire when the user clicks a POI. placeDetailsRequest.setAttribute( 'place', `places/${event.placeId}` ); updateMapAndMarker(); } else { // Fire when the user clicks the map (not on a POI). console.log('No place was selected.'); marker.style.display = 'none'; } }); } void init();
CSS
/* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; } .container { display: flex; height: 100vh; width: 100%; } gmp-map { flex-grow: 1; } .ui-panel { width: 400px; margin-left: 20px; margin-top: 10px; } gmp-place-details { width: 100%; margin: 0; border: none; }
HTML
<!doctype html>
<html>
<head>
<title>Place Details 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 zoom="17" map-id="DEMO_MAP_ID">
<gmp-advanced-marker></gmp-advanced-marker>
</gmp-map>
<div class="ui-panel">
<gmp-advanced-place-details>
<gmp-place-details-place-request
place="places/ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-name></gmp-place-name>
<gmp-place-address></gmp-place-address>
<gmp-place-rating></gmp-place-rating>
<gmp-place-type></gmp-place-type>
<gmp-place-price></gmp-place-price>
<gmp-place-accessible-entrance-icon></gmp-place-accessible-entrance-icon>
<gmp-place-opening-hours></gmp-place-opening-hours>
<gmp-place-website></gmp-place-website>
<gmp-place-phone-number></gmp-place-phone-number>
<gmp-place-summary></gmp-place-summary>
<gmp-place-type-specific-highlights></gmp-place-type-specific-highlights>
<gmp-place-review-summary></gmp-place-review-summary>
<gmp-place-reviews></gmp-place-reviews>
<gmp-place-feature-list></gmp-place-feature-list>
</gmp-advanced-place-details>
</div>
</div>
</body>
</html>عنصر فشرده جزئیات پیشرفته جا
روی نشانگری در نقشه کلیک کنید تا جزئیات مکان آن را در «عنصر فشرده جزئیات مکان پیشرفته» ببینید.
AdvancedPlaceDetailsCompactElement
جزئیات مکان انتخابشده را بااستفاده از حداقل فضا ارائه میدهد. این ممکن است در پنجره اطلاعاتی که مکانی را در نقشه برجسته میکند، در تجربه رسانههای اجتماعی مانند همرسانی مکان در گپ، بهعنوان پیشنهادی برای انتخاب مکان فعلی شما، یا در مقاله رسانهای برای ارجاع به مکان در Google Maps مفید باشد. AdvancedPlaceDetailsCompactElement میتواند نام، نشانی، ردهبندی، نوع، قیمت، نماد دسترسپذیری، وضعیت باز بودن، و یک عکس را نمایش دهد.
میتواند بهصورت افقی یا عمودی نمایش داده شود، همانطور که توسط مشخصه
orientation انتخاب شده است.
در قطعه کد زیر،
gmp-advanced-place-details-compact با
orientation تنظیمشده روی horizontal پیکربندی شده است. مشخصه اضافی
truncation-preferred، محتوای خاصی را کوتاه میکند تا
بهجای پیچیدن، در یک خط جا شود. عنصر
gmp-advanced-place-details-compact حاوی عنصر
فرزند gmp-place-details-place-request برای انتخاب مکان است.
این میتواند
شیء مکان،
شناسه مکان، یا نام منبع مکان باشد.
<gmp-advanced-place-details-compact orientation="horizontal" truncation-preferred>
<gmp-place-details-place-request place="places/ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-all-content></gmp-place-all-content>
</gmp-advanced-place-details-compact>پیکربندی محتوا
میتوانید محتوای مکان خاص نمایشدادهشده توسط عنصر
gmp-advanced-place-details-compact را با تودرتو کردن عناصر
فرزند برای انتخاب و پیکربندی جزئیات مکان کنترل کنید، همانطور که در این
قطعه کد نشان داده شده است:
<gmp-advanced-place-details-compact>
<gmp-place-details-place-request place="places/ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-photo></gmp-place-photo>
<gmp-place-name></gmp-place-name>
<gmp-place-rating></gmp-place-rating>
<gmp-place-address></gmp-place-address>
<gmp-place-opening-hours></gmp-place-opening-hours>
<gmp-place-attribution></gmp-place-attribution>
</gmp-advanced-place-details-compact>هر عنصر محتوای فرزند جزئیات مکان مربوطه را برای نمایش انتخاب میکند. ترتیب عناصر فرزند بیربط است، زیرا جزئیات انتخابشده همیشه با ترتیب ازپیشتعریفشده ثابتی ارائه میشود. برخیاز این عناصر را میتوان بااستفاده از مشخصههای مختص محتوا بیشتر پیکربندی کرد.
برای کسب اطلاعات بیشتر درباره همه عناصر محتوای پشتیبانیشده، به سند مرجع سفارشیسازی محتوای ابزاره مکان مراجعه کنید.
برای سادگی، میتوانید از
gmp-place-all-content
برای نمایش همه جزئیات موجود در عنصر «فشرده جزئیات پیشرفته مکان»
یا از
gmp-place-standard-content
برای نمایش پیکربندی استاندارد استفاده کنید.
پیکربندی ظاهر
محدوده عرض توصیهشده برای عنصر
gmp-advanced-place-details-compact در جهت عمودی
۱۸۰ تا ۳۰۰ پیکسل است. عرضهای کمتر از ۱۶۰ پیکسل ممکن است بهدرستی نمایش داده نشوند. ارتفاع ثابتی تنظیم نکنید.
محدوده عرض توصیهشده برای عنصر
gmp-advanced-place-details-compact در جهت
افقی ۱۸۰ تا ۵۰۰ پیکسل است. عرضهای کمتر از ۱۶۰ پیکسل ممکن است بهدرستی نمایش داده نشوند. در عرضهای کمتر از ۳۵۰ پیکسل، تصویر کوچک نشان داده نخواهد شد.
ارتفاع ثابتی تنظیم نکنید.
عنصر gmp-advanced-place-details-compact همچنین از انواع ویژگیهای CSS سفارشی برای پیکربندی رنگها و قلمهای عنصر پشتیبانی میکند. برای جزئیات بیشتر،
سبک سفارشی کیت میانای کاربر «جاها»
را ببینید.
توجه داشته باشید که اگر عنصر «جزئیات جا پیشرفته فشرده» به پنجره اطلاعات اضافه شود،
سبک سفارشی باید مستقیماً به عنصر gmp-advanced-place-details-compact
اعمال شود. دلیلش این است که
پنجره اطلاعات بخشی از DOM سایه نقشه است، بنابراین سبکهای CSS خارجی
اعمال نخواهند شد.
gmp-advanced-place-details-compact { --gmp-color-surface: #202124; --gmp-color-on-surface: #ffffff; --gmp-color-on-surface-variant: #9aa0a6; --gmp-color-primary: #8ab4f8; --gmp-font-family: "Roboto", sans-serif; }
دیدن نمونه کد کامل
TypeScript
// Use querySelector to select elements for interaction. const map = document.querySelector<google.maps.MapElement>('gmp-map')!; const placeDetails = document.querySelector< HTMLElement & { place?: google.maps.places.Place } >('gmp-advanced-place-details-compact')!; const placeDetailsRequest = document.querySelector<HTMLElement>( 'gmp-place-details-place-request' )!; const marker = document.querySelector<google.maps.marker.AdvancedMarkerElement>( 'gmp-advanced-marker' )!; async function init(): Promise<void> { // Request needed libraries. void Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('places'), ]); const { InfoWindow } = await google.maps.importLibrary('maps'); await window.customElements.whenDefined('gmp-map'); // Set the inner map options. map.innerMap.setOptions({ mapTypeControl: false, streetViewControl: false, }); await window.customElements.whenDefined('gmp-advanced-marker'); marker.collisionBehavior = 'REQUIRED_AND_HIDES_OPTIONAL'; const infoWindow = new InfoWindow(); infoWindow.addListener('close', () => { marker.position = null; }); const showInfoWindow = () => { if (infoWindow.isOpen) return; infoWindow.setContent(placeDetails); infoWindow.open({ anchor: marker }); }; placeDetails.addEventListener('gmp-load', () => { // For the initial load case, with no user click, we fall back to the place's location, and ensure the map has a center set and the InfoWindow is show. // (The clicked POI LatLng will be a more natural marker position, when available.) if (!map.center && placeDetails.place?.location) { map.center = marker.position = placeDetails.place.location; showInfoWindow(); } }); // Add an event listener to handle clicks. map.innerMap.addListener( 'click', (event: google.maps.MapMouseEvent | google.maps.IconMouseEvent) => { event.stop(); if ('placeId' in event && event.placeId) { // When the user clicks a POI. marker.position = event.latLng; placeDetailsRequest.setAttribute( 'place', `places/${event.placeId}` ); showInfoWindow(); } else { // When the user clicks the map (not on a POI). marker.position = null; placeDetailsRequest.removeAttribute('place'); console.log('No place was selected.'); } } ); } void init();
JavaScript
// Use querySelector to select elements for interaction. const map = document.querySelector('gmp-map'); const placeDetails = document.querySelector( 'gmp-advanced-place-details-compact' ); const placeDetailsRequest = document.querySelector( 'gmp-place-details-place-request' ); const marker = document.querySelector('gmp-advanced-marker'); async function init() { // Request needed libraries. void Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('places'), ]); const { InfoWindow } = await google.maps.importLibrary('maps'); await window.customElements.whenDefined('gmp-map'); // Set the inner map options. map.innerMap.setOptions({ mapTypeControl: false, streetViewControl: false, }); await window.customElements.whenDefined('gmp-advanced-marker'); marker.collisionBehavior = 'REQUIRED_AND_HIDES_OPTIONAL'; const infoWindow = new InfoWindow(); infoWindow.addListener('close', () => { marker.position = null; }); const showInfoWindow = () => { if (infoWindow.isOpen) return; infoWindow.setContent(placeDetails); infoWindow.open({ anchor: marker }); }; placeDetails.addEventListener('gmp-load', () => { // For the initial load case, with no user click, we fall back to the place's location, and ensure the map has a center set and the InfoWindow is show. // (The clicked POI LatLng will be a more natural marker position, when available.) if (!map.center && placeDetails.place?.location) { map.center = marker.position = placeDetails.place.location; showInfoWindow(); } }); // Add an event listener to handle clicks. map.innerMap.addListener('click', (event) => { event.stop(); if ('placeId' in event && event.placeId) { // When the user clicks a POI. marker.position = event.latLng; placeDetailsRequest.setAttribute( 'place', `places/${event.placeId}` ); showInfoWindow(); } else { // When the user clicks the map (not on a POI). marker.position = null; placeDetailsRequest.removeAttribute('place'); console.log('No place was selected.'); } }); } void init();
CSS
/* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; } .container { display: flex; height: 100vh; width: 100%; } gmp-map { flex-grow: 1; }
HTML
<!doctype html>
<html>
<head>
<title>Place Details Compact 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 zoom="17" map-id="DEMO_MAP_ID">
<gmp-advanced-marker></gmp-advanced-marker>
</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
place="places/ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-name></gmp-place-name>
<gmp-place-media lightbox-preferred></gmp-place-media>
<gmp-place-rating></gmp-place-rating>
<gmp-place-type></gmp-place-type>
<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>ویژگیهای پیشرفته
سفارشیسازی دکمههای کنش
دکمههای کنش را بهعنوان فرزندان مستقیم مؤلفه «جزئیات پیشرفته مکان» اضافه کنید. از <gmp-place-link> برای اتصالات ناوبری استاندارد استفاده کنید و مشخصه action را بهطور صریح مشخص کنید. درصورت تمایل میتوانید مشخصه slot را تعیین کنید.
کنشهای ازپیشتعریفشده معتبر عبارتاند از open-website،
open-directions، open-map، و call.
اگر مشخصه slot حذف شود، بهطور پیشفرض به
action-main تبدیل میشود.
<gmp-advanced-place-details-compact orientation="vertical" truncation-preferred> <gmp-place-details-place-request place="places/ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request> <!-- Other content items --> <gmp-place-link action="open-website" target="_blank"></gmp-place-link> <gmp-place-link action="open-directions" slot="action-corner"></gmp-place-link> </gmp-advanced-place-details-compact>
الزامات ذکر منبع تصویری
مهم: باید برای کاربران نهایی روشن کنید که دکمه کنش سفارشی اطلاعات کاربر را با طرف سومی غیراز Google همرسانی خواهد کرد. الزامات ذکر منبع تصویری را ببینید.
نام مکان را حذف کنید
برای حذف نام مکان، عنصر <gmp-place-name> را بهطور صریح از محتوای سفارشیتان مستثنی کنید.
<gmp-advanced-place-details> <gmp-place-details-place-request place="places/ChIJT7FdmYiAhYAROFOvrIxRJDU"></gmp-place-details-place-request> <!-- Exclude <gmp-place-name> to hide the place name --> <gmp-place-rating></gmp-place-rating> <gmp-place-address></gmp-place-address> </gmp-advanced-place-details>
فیلتر کردن مرورها و رسانهها
این نمونه کد فقط رسانهها و مرورهایی را نشان میدهد که در آنها به «قهوه» اشاره شده است.
<gmp-advanced-place-details> <gmp-place-details-place-request place="places/ChIJT7FdmYiAhYAROFOvrIxRJDU"></gmp-place-details-place-request> <gmp-place-media query="coffee"></gmp-place-media> <gmp-place-reviews query="coffee" rank-preference="newest"></gmp-place-reviews> </gmp-advanced-place-details>
همچنین میتوانید از «جاوا اسکریپت» برای بازیابی تعداد کل مواردی که با پرسمان جستجوی دادهشده مطابقت دارند استفاده کنید. برای این کار، ویژگیهای searchMediaCount و searchReviewsCount را بخوانید. باید قبلاز دسترسی به این ویژگیها، منتظر رویداد gmp-load بمانید.
const detailsElement = document.querySelector('gmp-advanced-place-details'); const mediaElement = detailsElement.querySelector('gmp-place-media'); mediaElement.addEventListener('gmp-load', (e) => { console.log('Total matching photos: ', e.target.searchMediaCount); }); const reviewsElement = detailsElement.querySelector('gmp-place-reviews'); reviewsElement.addEventListener('gmp-load', (e) => { console.log('Total matching reviews: ', e.target.searchReviewsCount); });