Visão geral
A classe Place fornece uma API mais simples para usar a biblioteca Places e a API Maps JavaScript, além de ser compatível com padrões de uso modernos, como objetos promessa.
Comece agora
Gerar uma chave de API e ativar as APIs necessárias
Antes de usar a visualização da classe Place, você precisa de um projeto do Cloud com uma conta de faturamento, além de ativar também as APIs Maps JavaScript e Places. Siga as instruções para Ativar uma ou mais APIs ou SDKs. As duas APIs precisam estar ativadas no mesmo projeto no console do Cloud.
Gerar uma chave de APICarregar a biblioteca Places
Para usar a funcionalidade da biblioteca Places, é preciso carregá-la usando o parâmetro libraries
no URL de carregamento do script da API Maps JavaScript. Para essa visualização, também é necessário especificar v=beta
.
<script async src="https://maps.googleapis.com/maps/api/js?v=beta&key=YOUR_API_KEY&libraries=places&callback=initMap"> </script>
Encontrar um lugar por consulta de texto
Chame findPlaceFromQuery
para encontrar um lugar por consulta de texto. Use o parâmetro fields
para especificar uma lista separada por vírgulas de um ou mais campos de dados de lugar com letras concatenadas. Use fields: ['*']
para retornar todos os dados de um lugar (somente para testes, não recomendado em um ambiente real).
O exemplo a seguir mostra o uso de um padrão async/await para chamar findPlaceFromQuery
e mostrar os resultados em um mapa.
TypeScript
let map: google.maps.Map; let centerCoordinates = { lat: 37.4161493, lng: -122.0812166 }; function initMap() { map = new google.maps.Map(document.getElementById('map') as HTMLElement, { center: centerCoordinates, zoom: 14, // ... }); findPlace(); } async function findPlace() { const request = { query: 'Sports Page', fields: ['displayName', 'location'], locationBias: centerCoordinates, }; const { places } = await google.maps.places.Place.findPlaceFromQuery(request); if (places.length) { const place = places[0]; const location = place.location as google.maps.LatLng; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); map.setCenter(location); } else { console.log('No results'); } }
JavaScript
let map; let centerCoordinates = { lat: 37.4161493, lng: -122.0812166 }; function initMap() { map = new google.maps.Map(document.getElementById("map"), { center: centerCoordinates, zoom: 14, // ... }); findPlace(); } async function findPlace() { const request = { query: "Sports Page", fields: ["displayName", "location"], locationBias: centerCoordinates, }; const { places } = await google.maps.places.Place.findPlaceFromQuery(request); if (places.length) { const place = places[0]; const location = place.location; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); map.setCenter(location); } else { console.log("No results"); } }
Encontrar um lugar pelo número de telefone
Ligue para findPlaceFromPhoneNumber
e encontre um lugar pelo número de telefone. Os números de telefone precisam estar no formato internacional (com um sinal de adição "+" como prefixo, seguido pelo código do país e telefone. Consulte Recomendação E.164 ITU para mais informações. Use o parâmetro fields
para especificar uma lista separada por vírgulas de um ou mais campos de dados de lugar com letras concatenadas. Use fields: ['*']
para retornar todos os dados de um lugar (somente para testes, não recomendado em um ambiente real).
O exemplo a seguir mostra o uso de um padrão async/await para chamar findPlaceFromPhoneNumber
e mostrar os resultados em um mapa.
TypeScript
async function findPlaceByPhone() { const request = { phoneNumber: '+1(206)787-5388', fields: ['displayName', 'location'], } const { places } = await google.maps.places.Place.findPlaceFromPhoneNumber(request); if (places.length) { const place = places[0]; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); console.log(place.displayName); } else { console.log('No results'); } }
JavaScript
async function findPlaceByPhone() { const request = { phoneNumber: "+1(206)787-5388", fields: ["displayName", "location"], }; const { places } = await google.maps.places.Place.findPlaceFromPhoneNumber( request ); if (places.length) { const place = places[0]; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); console.log(place.displayName); } else { console.log("No results"); } } window.initMap = initMap;
Usar o Place Details
Se você já tem um objeto Place
ou um ID de lugar, chame Place.fetchFields
para ver mais detalhes do local. Use o parâmetro fields
para especificar uma lista separada por vírgulas de um ou mais campos de dados de lugar com letras concatenadas. Use fields: ['*']
para retornar todos os campos de dados (somente para testes, não recomendado em um ambiente real).
TypeScript
async function getPlaceDetails() { // Use place ID to create a new Place instance. const place = new google.maps.places.Place({ id: 'ChIJN1t_tDeuEmsRUsoyG83frY4', requestedLanguage: 'en', // optional }); // Call fetchFields, passing the desired data fields. await place.fetchFields({ fields: ['displayName', 'formattedAddress'] }); // Show the result console.log(place.displayName); console.log(place.formattedAddress); }
JavaScript
async function getPlaceDetails() { // Use place ID to create a new Place instance. const place = new google.maps.places.Place({ id: "ChIJN1t_tDeuEmsRUsoyG83frY4", requestedLanguage: "en", // optional }); // Call fetchFields, passing the desired data fields. await place.fetchFields({ fields: ["displayName", "formattedAddress"] }); // Show the result console.log(place.displayName); console.log(place.formattedAddress); }
Campos de dados de lugar
Os campos correspondem aos resultados do Place Details e são divididos em três categorias de faturamento: "Basic", "Contact" e "Atmosphere". Os campos "Basic" são faturados de acordo com a taxa básica e não geram cobranças extras. Os campos "Contact" e "Atmosphere" são faturados a uma taxa maior.
Consulte a tabela de preços para mais informações. As atribuições (html_attributions
) são sempre retornadas a cada chamada, tendo sido solicitadas ou não.
A classe Place é compatível com os seguintes campos:
Basic Data
Campo | Classe do lugar (somente v=beta channel) |
---|---|
Componente de endereço | addressComponents |
Status comercial | businessStatus |
Endereço formatado | adrFormatAddress |
Local | location |
Ícone | icon |
URI base da máscara de ícones | svgIconMaskUri |
Cor de segundo plano do ícone | iconBackgroundColor |
Nome | displayName |
Foto | photos |
ID do lugar | id |
Plus Code | plusCode |
Tipo | types |
URL | websiteURI |
Deslocamento de UTC | utcOffsetMinutes |
Janela de visualização | viewport |
Entrada com acessibilidade | hasWheelchairAccessibleEntrance |
Campos de dados do contato
Campo | Classe do lugar (somente v=beta channel) |
---|---|
Número de telefone | nationalPhoneNumber |
Número de telefone internacional | internationalPhoneNumber |
Horário de funcionamento | openingHours |
Site | websiteURI |
Campos de dados de ambiente
Campo | Classe do lugar (somente v=beta channel) |
---|---|
Drive-thru | hasCurbsidePickup |
Entrega | hasDelivery |
Refeição no local | hasDineIn |
Nível de preço | priceLevel |
Avaliação | rating |
Aceita reservas | isReservable |
Avaliações | reviews |
Serve cerveja | servesBeer |
Serve café da manhã | servesBreakfast |
Serve brunch | servesBrunch |
Serve jantar | servesDinner |
Serve almoço | servesLunch |
Serve comida vegetariana | servesVegetarianFood |
Serve vinho | servesWine |
Para viagem | hasTakeout |
Total de classificações do usuário | userRatingsCount |