Advanced Place Details Elements

«عنصر جزئیات پیشرفته مکان» و «عنصر فشرده جزئیات پیشرفته مکان» عناصر HTML هستند که جزئیات مکان را ارائه می‌دهند:

هر دو «عنصر جزئیات پیشرفته مکان» و «عنصر فشرده جزئیات پیشرفته مکان» ویژگی‌های پیشرفته یکسانی ارائه می‌دهند، ازجمله سفارشی‌سازی دکمه‌های کنش، حذف نام مکان، و فیلتر کردن مرورها و رسانه‌ها.

از ابزار سفارشی‌سازی استفاده کنید تا ببینید مجموعه‌های مختلف ویژگی‌ها چگونه بر ظاهر عنصر «جزئیات مکان‌ها» تأثیر می‌گذارند و به کد در 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);
});