L'API Places può restituire informazioni dettagliate su un luogo specifico. Questa pagina illustra le differenze tra i dettagli dei luoghi come utilizzati nella classe Place
(nuova) e PlacesService
(legacy) e fornisce alcuni snippet di codice per il confronto. La seguente tabella elenca alcune delle principali differenze nell'utilizzo dei dettagli dei luoghi tra la classe Place
e PlacesService
:
PlacesService (legacy) |
Place (novità) |
---|---|
getDetails() |
fetchFields() |
PlaceDetailsRequest |
FetchFieldsRequest |
I metodi richiedono l'utilizzo di un callback per gestire l'oggetto risultati e la risposta google.maps.places.PlacesServiceStatus . |
Utilizza le promesse e funziona in modo asincrono. |
I metodi richiedono un controllo PlacesServiceStatus . |
Nessun controllo dello stato richiesto, è possibile utilizzare la gestione degli errori standard. |
I campi dei dati dei luoghi sono formattati utilizzando il nome in minuscolo con lettere iniziali maiuscole. | I campi di dati dei luoghi sono formattati utilizzando il camel case. |
Limitato a un insieme fisso di tipi di luoghi e campi di dati sui luoghi. | Offre una selezione ampliata di tipi di luoghi e campi di dati dei luoghi aggiornati regolarmente. |
Confronto del codice
Questa sezione confronta due frammenti di codice simili per illustrare le differenze tra il servizio Places e la classe Place. Gli snippet di codice mostrano il codice richiesto su ogni rispettiva API per effettuare una richiesta di dettagli dei luoghi, quindi utilizzano i dati dei luoghi risultanti per aggiungere un indicatore alla mappa.
Servizio Luoghi (legacy)
Il seguente snippet di codice condensato mostra come effettuare una richiesta di dettagli del luogo utilizzando
PlacesService
. La richiesta utilizza un callback e include un controllo condizionale obbligatorio su PlacesServiceStatus
. I campi dei dati dei luoghi necessari sono
specificati nel corpo della richiesta.
function getPlaceDetails() {
// Instantiate the Places Service.
const service = new google.maps.places.PlacesService(map);
// Make a request using the Place ID.
const request = {
placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
fields: ["name", "formatted_address", "place_id", "geometry"],
};
// Request place details.
service.getDetails(request, (place, status) => {
// Check whether PlacesServiceStatus is OK.
if (
status === google.maps.places.PlacesServiceStatus.OK &&
place &&
place.geometry &&
place.geometry.location
) {
// Log the result.
console.log(place.name);
console.log(place.formatted_address);
// Add a marker for the place.
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
});
}
Scopri di più
- Guarda l'esempio di codice completo
- Documentazione di Place Details
getDetails
riferimento
Classe Place (nuova)
Il seguente snippet di codice condensato mostra come effettuare una richiesta di dettagli del luogo utilizzando la classe Place
. La richiesta è asincrona e non include un controllo dello stato (è possibile utilizzare la gestione degli errori standard). Un ID luogo viene utilizzato per creare una nuova istanza di Place
, che viene utilizzata per effettuare la richiesta (fetchFields()
). I campi dei dati dei luoghi necessari non vengono passati finché non viene chiamato fetchFields()
, il che offre una maggiore flessibilità. Poiché il metodo fetchFields()
utilizza l'operatore await, può essere utilizzato solo all'interno di una funzione async
.
async function getPlaceDetails() {
// Use place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
requestedLanguage: "en", // optional
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// Log the result.
console.log(place.displayName);
console.log(place.formattedAddress);
// Add an Advanced Marker.
const marker = new google.maps.marker.AdvancedMarkerElement({
map,
position: place.location,
title: place.displayName,
});
}
Scopri di più
- Guarda l'esempio di codice completo
- Documentazione di Place Details
fetchFields()
riferimento