«عنصر جزئیات مکان» و «عنصر فشرده جزئیات مکان» عناصر HTML هستند که جزئیات مکان را ارائه میدهند:
-
PlaceDetailsElementاز همه دادههای «مکان» قابلتجسم پشتیبانی میکند و ممکن است شامل چند عکس باشد. -
PlaceDetailsCompactElementطوری طراحی شده است که حداقل فضا را اشغال کند و مجموعه مختصری از اطلاعات مربوط به مکان را نمایش دهد، ازجمله نام، نشانی، ردهبندی، و غیره. همچنین ممکن است شامل یک عکس باشد.
از ابزار سفارشیسازی استفاده کنید تا ببینید مجموعههای مختلف ویژگیها چگونه بر ظاهر عنصر «جزئیات مکانها» تأثیر میگذارند و به کد در HTML/CSS، Kotlin/XML، و Swift دسترسی پیدا کنید.
عنصر جزئیات جا
روی نشانگری در نقشه کلیک کنید تا جزئیات مکان آن را در «عنصر جزئیات مکان» ببینید.
PlaceDetailsElement
از طیف گستردهای از عناصر محتوا پشتیبانی میکند، ازجمله ساعت کاری کامل،
وبسایت، شماره تلفن،
خلاصه با پشتیبانی هوش مصنوعی
با بازگشت به خلاصه سرمقالهای، نکات برجسته خاص نوع، مرورها،
خلاصه مرور با پشتیبانی هوش مصنوعی، Plus Code، و فهرستهای ویژگی.
برای نمایش جزئیات مکان روی نقشه، عنصر
gmp-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-place-details>
<gmp-place-details-place-request place="ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-all-content></gmp-place-all-content>
</gmp-place-details>
</div>
<gmp-advanced-marker></gmp-advanced-marker>
</gmp-map>پیکربندی محتوا
میتوانید محتوای مکان خاصی را که توسط عنصر gmp-place-details نمایش داده میشود با تودرتو کردن عناصر فرزند برای انتخاب و پیکربندی جزئیات مکان کنترل کنید، همانطور که در این مثال نشان داده شده است:
<gmp-place-details>
<gmp-place-details-place-request
place="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-details>
هر عنصر محتوای فرزند جزئیات مکان مربوطه را برای نمایش انتخاب میکند:
gmp-place-address
نشانی مکان را انتخاب میکند،
gmp-place-price
سطح قیمت مکان را انتخاب میکند، و غیره. عناصر
gmp-place-summary
و
gmp-place-review-summary
بهترتیب خلاصهای
با بهرهگیری از هوش مصنوعی
از مکان و مرورهای آن ارائه میدهند. ترتیب عناصر فرزند
مهم نیست، زیرا جزئیات انتخابشده همیشه با ترتیبی ثابت و ازپیشتعریفشده
ارائه میشوند. فقط عناصر محتوایی که اضافه میکنید نمایش داده میشود، بنابراین gmp-place-name را اضافه کنید تا نام مکان نشان داده شود.
برخیاز این عناصر را میتوان بااستفاده از مشخصههای مختص محتوا بیشتر پیکربندی کرد:
-
از عنصر
gmp-place-mediaبرای نمایش یک عکس استفاده میشود و شامل مشخصهlightbox-preferredاست که با کلیک کردن روی آن، عکس در لایتباکس باز میشود. «لایتباکس» بهطور پیشفرض غیرفعال است. -
از عنصر
gmp-place-attributionبرای نمایش منبع عکس استفاده میشود. از مشخصههایlight-scheme-colorوdark-scheme-colorبرای تنظیم رنگ نوشتار انتساب در حالت روشن و تاریک استفاده میشود.
برای کسب اطلاعات بیشتر درباره همه عناصر محتوای پشتیبانیشده، به سند مرجع سفارشیسازی محتوای ابزاره مکان مراجعه کنید.
برای سادگی، میتوانید از
gmp-place-all-content
برای نمایش همه جزئیات موجود در عنصر «جزئیات مکان» یا از
gmp-place-standard-content
برای نمایش پیکربندی استاندارد استفاده کنید. هر دوی این عناصر شامل نام مکان هستند.
پیکربندی ظاهر
محدوده عرض توصیهشده برای عنصر gmp-place-details
۲۵۰ تا ۴۰۰ پیکسل است. عرضهای کمتر از ۲۵۰ پیکسل ممکن است بهدرستی نمایش داده نشوند. ارتفاع را متناسب با برنامهتان تنظیم کنید. عنصر «جزئیات مکان» بهگونهای طراحی شده است که
درصورت نیاز در فضای اختصاصدادهشده پیمایش کند.
عنصر gmp-place-details همچنین از انواع مختلفی از
ویژگیهای CSS سفارشی برای پیکربندی رنگها و قلمهای عنصر پشتیبانی میکند. برای جزئیات بیشتر،
سبک سفارشی کیت میانای کاربر «جاها»
را ببینید.
مشاهده نمونه کد کامل
JavaScript
// Use querySelector to select elements for interaction. const map = document.querySelector('gmp-map'); const placeDetails = document.querySelector('gmp-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.place = 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"
});
</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-place-details>
<gmp-place-details-place-request
place="ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-content-config>
<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-content-config>
</gmp-place-details>
</div>
</div>
</body>
</html>عنصر فشرده جزئیات جا
روی نشانگری در نقشه کلیک کنید تا جزئیات مکان آن را در «عنصر فشرده جزئیات مکان» ببینید.
PlaceDetailsCompactElement
جزئیات مکان انتخابشده را بااستفاده از حداقل فضا ارائه میدهد. این ممکن است در پنجره اطلاعاتی که مکانی را در نقشه برجسته میکند، در تجربه رسانههای اجتماعی مانند همرسانی مکان در گپ، بهعنوان پیشنهادی برای انتخاب مکان فعلی شما، یا در مقاله رسانهای برای ارجاع به مکان در Google Maps مفید باشد. PlaceDetailsCompactElement میتواند
نام، نشانی، ردهبندی، نوع، قیمت، نماد دسترسپذیری، وضعیت
باز بودن، و یک عکس را نمایش دهد. میتواند بهصورت افقی یا عمودی نمایش داده شود، که با مشخصه orientation انتخاب میشود.
در قطعه کد زیر، gmp-place-details-compact
با orientation تنظیمشده روی horizontal پیکربندی شده است.
مشخصه دیگری بهنام truncation-preferred،
محتوای خاصی را کوتاه میکند تا بهجای پیچیدن در خط بعدی، در یک خط جا شود. عنصر
gmp-place-details-compact حاوی عنصر فرزند
gmp-place-details-place-request برای انتخاب مکان است. این
میتواند یک
شیء مکان، یک
شناسه مکان، یا نام منبع مکان باشد.
<gmp-place-details-compact orientation="horizontal" truncation-preferred>
<gmp-place-details-place-request place="ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-all-content></gmp-place-all-content>
</gmp-place-details-compact>پیکربندی محتوا
میتوانید محتوای مکان خاص نمایشدادهشده توسط عنصر
gmp-place-details-compact را با تودرتو کردن عناصر فرزند
برای انتخاب و پیکربندی جزئیات مکان کنترل کنید، همانطور که در این قطعه کد نشان داده شده است:
<gmp-place-details-compact orientation="horizontal" truncation-preferred> <gmp-place-details-place-request place="ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request> <gmp-place-media lightbox-preferred></gmp-place-media> <gmp-place-name></gmp-place-name> <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-place-details-compact>
هر عنصر محتوای فرزند جزئیات مکان مربوطه را برای نمایش انتخاب میکند. ترتیب عناصر فرزند بیربط است، زیرا جزئیات انتخابشده همیشه با ترتیب ازپیشتعریفشده ثابتی ارائه میشود. فقط عناصر محتوایی که اضافه میکنید نمایش داده میشود، بنابراین gmp-place-name را اضافه کنید تا نام مکان نشان داده شود. برخیاز این
عناصر را میتوان بااستفاده از مشخصههای مختص محتوا بیشتر پیکربندی کرد.
برای کسب اطلاعات بیشتر درباره همه عناصر محتوای پشتیبانیشده، به سند مرجع سفارشیسازی محتوای ابزاره مکان مراجعه کنید.
برای سادگی، میتوانید از
gmp-place-all-content
برای نمایش همه جزئیات موجود در عنصر «فشرده جزئیات مکان» یا از
gmp-place-standard-content
برای نمایش پیکربندی استاندارد استفاده کنید. هر دوی این عناصر شامل نام مکان هستند.
پیکربندی ظاهر
محدوده عرض توصیهشده برای عنصر
gmp-place-details-compact در جهت عمودی
۱۸۰ تا ۳۰۰ پیکسل است. عرضهای کمتر از ۱۶۰ پیکسل ممکن است بهدرستی نمایش داده نشوند. ارتفاع ثابتی
تنظیم نکنید.
محدوده عرض توصیهشده برای عنصر
gmp-place-details-compact در جهت افقی
۱۸۰ تا ۵۰۰ پیکسل است. عرضهای کمتر از ۱۶۰ پیکسل ممکن است بهدرستی نمایش داده نشوند. در
عرضهای کمتر از ۳۵۰ پیکسل، تصویر کوچک نشان داده نخواهد شد. ارتفاع ثابتی
تنظیم نکنید.
عنصر gmp-place-details-compact همچنین از انواع مختلفی از ویژگیهای CSS سفارشی برای پیکربندی رنگها و قلمهای عنصر پشتیبانی میکند. برای جزئیات بیشتر،
سبک سفارشی کیت میانای کاربر «جاها»
را ببینید.
توجه داشته باشید که اگر عنصر «جزئیات جا»ی فشرده به پنجره اطلاعات اضافه شود،
سبک سفارشی باید مستقیماً به عنصر
gmp-place-details-compact اعمال شود. دلیلش این است که پنجره اطلاعات بخشی از DOM سایه نقشه است، بنابراین سبکهای CSS خارجی اعمال نخواهند شد.
<gmp-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="ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>دیدن نمونه کد کامل
این مثال افزودن
PlaceDetailsCompactElement
به نقشه را بهصورت برنامهنویسیشده بااستفاده از
InfoWindow
و
AdvancedMarkerElement نشان میدهد.
JavaScript
// Use querySelector to select elements for interaction. const map = document.querySelector('gmp-map'); const placeDetails = document.querySelector('gmp-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) { // When the user clicks a POI. marker.position = event.latLng; placeDetailsRequest.place = event.placeId; showInfoWindow(); } else { // When the user clicks the map (not on a POI). marker.position = null; placeDetailsRequest.place = null; 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"
});
</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-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-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="ChIJC8HakaIRkFQRiOgkgdHmqkk"></gmp-place-details-place-request>
<gmp-place-content-config>
<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-place-content-config>
</gmp-place-details-compact>
</body>
</html>