O elemento Advanced Place Details e o elemento Advanced Place Details Compact Element são elementos HTML que renderizam detalhes de um lugar:
-
O
AdvancedPlaceDetailsElementoferece suporte a todos os dados de lugar visualizáveis e pode incluir várias fotos. -
O
AdvancedPlaceDetailsCompactElementfoi projetado para consumir o mínimo de espaço e mostrar um conjunto conciso de informações sobre um lugar, incluindo nome, endereço, classificação etc. Ele também pode incluir uma única foto.
Os elementos Advanced Place Details e Advanced Place Details Compact Element oferecem os mesmos recursos avançados, incluindo a personalização de botões de ação, a omissão do nome do lugar e a filtragem de avaliações e mídias.
Use a ferramenta de personalização para visualizar como diferentes conjuntos de propriedades afetam a aparência de um elemento de detalhes de lugares e acessar o código em HTML/CSS, Kotlin/XML, e Swift.
Elemento Advanced Place Details (pré-lançamento)
Clique em um marcador no mapa para conferir os detalhes do lugar em um elemento Advanced Place Details.
O
AdvancedPlaceDetailsElement
oferece suporte a uma ampla variedade de elementos de conteúdo, incluindo horário de funcionamento completo,
site, número de telefone,
resumo com tecnologia de IA
com substituto para resumo editorial, destaques específicos do tipo, avaliações,
resumo das avaliações com tecnologia de IA, além de Plus Code e listas de recursos.
Para mostrar os detalhes do lugar em um mapa, adicione um
gmp-advanced-place-details elemento ao
gmp-map elemento na página HTML. Inclua um elemento filho,
gmp-place-details-place-request, para selecionar o lugar. Ele
pode ser um
objeto de lugar, um
ID de lugar ou um nome de recurso de lugar:
<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>Configurar o conteúdo
É possível controlar o conteúdo específico do lugar mostrado pelo
gmp-advanced-place-details elemento aninhando elementos filhos
para selecionar e configurar os detalhes do lugar, conforme mostrado neste exemplo:
<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>
Cada elemento de conteúdo filho seleciona um detalhe de lugar correspondente para
mostrar:
gmp-place-address
seleciona o endereço do lugar,
gmp-place-price
seleciona o nível de preço do lugar etc. Os elementos
gmp-place-summary
e
gmp-place-review-summary
fornecem um
resumo com tecnologia de IA
do lugar e das avaliações, respectivamente. A ordem dos elementos filhos
é irrelevante, já que os detalhes selecionados são sempre renderizados em uma
ordem predefinida fixa.
Alguns desses elementos podem ser configurados ainda mais usando atributos específicos do conteúdo: atributos:
-
O
gmp-place-mediaelemento é usado para mostrar uma única foto e inclui umlightbox-preferredatributo que abre a foto em um lightbox quando clicado. O lightbox fica desativado por padrão. -
O
gmp-place-attributionelemento é usado para mostrar configurações gerais de atribuição de dados da API Maps como a origem de uma foto ou avaliação. Os atributoslight-scheme-coloredark-scheme-colorsão usados para definir a cor do texto de atribuição no modo claro e escuro.
Consulte a documentação de referência de personalização de conteúdo do widget de lugar para mais informações sobre todos os elementos de conteúdo com suporte.
Para simplificar, também é possível usar
gmp-place-all-content
para mostrar todos os detalhes disponíveis no elemento Advanced Place Details ou
com
gmp-place-standard-content
para mostrar uma configuração padrão.
Configurar a aparência
O intervalo de largura recomendado para o
gmp-advanced-place-details elemento é de 250 a 400 pixels. Larguras menores
que 250 pixels podem não ser mostradas corretamente. Defina a altura de acordo com seu
aplicativo. O elemento Advanced Place Details foi projetado para rolar
no espaço alocado conforme necessário.
O elemento gmp-advanced-place-details também oferece suporte a uma variedade de propriedades CSS personalizadas para configurar as cores e fontes do elemento. Consulte
Estilo personalizado do kit de interface do Places
para mais detalhes.
Conferir um exemplo de código completo
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>Elemento Advanced Place Details Compact (pré-lançamento)
Clique em um marcador no mapa para conferir os detalhes do lugar em um elemento Advanced Place Details Compact.
O
AdvancedPlaceDetailsCompactElement
renderiza detalhes de um lugar selecionado usando o mínimo de espaço. Isso pode ser
útil em uma janela de informações que destaca um lugar em um mapa, em uma experiência de mídia social
como compartilhar um local em um chat, como uma sugestão para
selecionar seu local atual ou em um artigo de mídia para referenciar
o lugar no Google Maps. O
AdvancedPlaceDetailsCompactElement pode mostrar nome, endereço,
classificação, tipo, preço, ícone de acessibilidade, status aberto e uma única foto.
Ele pode ser mostrado na horizontal ou vertical, conforme selecionado pelo
orientation atributo.
No snippet a seguir,
gmp-advanced-place-details-compact está configurado com
orientation definido como horizontal. Um atributo adicional
atributo, truncation-preferred, trunca determinado conteúdo para
caber em uma linha em vez de quebrar. O
gmp-advanced-place-details-compact elemento contém um elemento filho, gmp-place-details-place-request, para selecionar o lugar.
Ele pode ser um
objeto de lugar, um
ID de lugar ou um nome de recurso de lugar.
<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>Configurar o conteúdo
É possível controlar o conteúdo específico do lugar mostrado pelo
gmp-advanced-place-details-compact elemento aninhando elementos filhos para selecionar e configurar os detalhes do lugar, conforme mostrado neste
snippet:
<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>Cada elemento de conteúdo filho seleciona um detalhe de lugar correspondente para mostrar. A ordem dos elementos filhos é irrelevante, já que os detalhes selecionados são sempre renderizados em uma ordem predefinida fixa. Alguns desses elementos podem ser configurados ainda mais usando atributos específicos do conteúdo.
Consulte a documentação de referência de personalização de conteúdo do widget de lugar para mais informações sobre todos os elementos de conteúdo com suporte.
Para simplificar, também é possível usar
gmp-place-all-content
para mostrar todos os detalhes disponíveis no elemento Advanced Place Details Compact
ou com
gmp-place-standard-content
para mostrar uma configuração padrão.
Configurar a aparência
O intervalo de largura recomendado para o
gmp-advanced-place-details-compact elemento na orientação vertical é de 180 a 300 pixels. Larguras menores que 160 pixels podem não ser mostradas
corretamente. Não defina uma altura fixa.
O intervalo de largura recomendado para o
gmp-advanced-place-details-compact elemento na orientação horizontal
é de 180 a 500 pixels. Larguras menores que 160 pixels podem não ser mostradas
corretamente. Em larguras menores que 350 pixels, a imagem em miniatura não será mostrada.
Não defina uma altura fixa.
O elemento gmp-advanced-place-details-compact também oferece suporte a
várias propriedades CSS personalizadas para configurar as cores e
fontes do elemento. Consulte
Estilo personalizado do kit de interface do Places
para mais detalhes.
Note que se o elemento Advanced Place Details Compact for adicionado a uma
janela de informações, o estilo personalizado precisará ser aplicado diretamente ao
gmp-advanced-place-details-compact elemento. Isso ocorre porque
a janela de informações faz parte do DOM sombreado do mapa, então os estilos CSS externos
não serão aplicados.
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; }
Conferir um exemplo de código completo
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>Recursos avançados
Personalizar botões de ação
Adicione botões de ação como filhos diretos do componente Advanced Place Details
Use <gmp-place-link> para conexões de navegação padrão e especifique explicitamente o atributo action. Opcionalmente, você pode especificar o atributo slot.
As ações predefinidas válidas são open-website,
open-directions, open-map, e call.
Se o atributo slot for omitido, ele será definido como
action-main por padrão.
<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>
Requisitos de atribuição visual
Importante:você precisa deixar claro para os usuários finais quando um botão de ação personalizado compartilhar informações do usuário com um terceiro que não seja o Google. Consulte os requisitos de atribuição visual.
Omitir o nome do lugar
Para omitir o nome do lugar, exclua explicitamente o
<gmp-place-name> elemento do seu conteúdo personalizado.
<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>
Filtrar avaliações e mídias
Este exemplo de código mostra apenas mídias e avaliações que mencionam "café".
<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>
Também é possível usar JavaScript para recuperar o número total de itens que
correspondem à consulta de pesquisa fornecida lendo as
searchMediaCount e searchReviewsCount
propriedades. Você precisa aguardar o evento gmp-load antes de acessar essas propriedades.
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); });