Panoramica
La geocodifica è il processo di conversione degli indirizzi (come "1600 Amphitheatre Parkway, Mountain View, CA") nelle coordinate geografiche (ad esempio latitudine 37.423021 e longitudine -122.083739), che puoi utilizzare per posizionare indicatori o posizionare la mappa.
La geocodifica inversa è il processo di conversione di dati geografici in un indirizzo leggibile (consulta l'articolo Geocodifica inversa (ricerca di indirizzi)).
Puoi anche utilizzare il geocodificatore per trovare l'indirizzo di una è stato assegnato un ID luogo.
L'API Maps JavaScript fornisce un Classe geocodificatore per geocodifica e geocodifica inversa in modo dinamico a partire dall'input dell'utente. Se invece vuoi geocodificare indirizzi statici noti, controlla Servizio web di geocodifica.
Per iniziare
Prima di utilizzare il servizio Geocoding nell'API Maps JavaScript, assicurati che l'API Geocoding sia abilitata nella console Google Cloud, configurato per l'API Maps JavaScript.
Per visualizzare l'elenco delle API abilitate:
- Vai alla sezione Console Google Cloud.
- Fai clic sul pulsante Seleziona un progetto, quindi seleziona lo stesso progetto che hai configurato. per l'API Maps JavaScript e fai clic su Apri.
- Nell'elenco delle API sulla Dashboard, cerca API Geocoding.
- Se vedi l'API nell'elenco, non devi eseguire altre operazioni. Se l'API non è elencata,
abilitala:
- .
- Nella parte superiore della pagina, seleziona ABILITA API per visualizzare lo stato Scheda Raccolta. In alternativa, dal menu laterale a sinistra, Seleziona Libreria.
- Cerca API Geocoding, poi selezionala dalla dei risultati di ricerca.
- Seleziona ABILITA. Al termine del processo, L'API Geocoding viene visualizzata nell'elenco delle API nella Dashboard.
Prezzi e norme
Prezzi
Dal 16 luglio 2018 è entrato in vigore un nuovo piano tariffario con pagamento a consumo per Maps, Routes e Places. Per saperne di più sui nuovi prezzi e sull'utilizzo limiti per l'uso del servizio JavaScript Geocoding, consulta Utilizzo e fatturazione per l'API Geocoding.
Norme
L'utilizzo del servizio Geocoding deve essere conforme alle norme descritte per l'API Geocoding.
Richieste di geocodifica
L'accesso al servizio Geocoding è asincrono, poiché l'API di Google Maps deve effettuare una chiamata a un server esterno. Per questo motivo, devi passare un metodo di callback da eseguire al completamento della richiesta. Questo il metodo di callback elabora i risultati. Tieni presente che il geocodificatore può restituire più di un risultato.
Puoi accedere al servizio di geocodifica dell'API di Google Maps all'interno del tuo codice tramite la
Oggetto costruttore google.maps.Geocoder
. La
Il metodo Geocoder.geocode()
avvia una richiesta alla geocodifica
di servizio, passandogli un valore letterale di oggetto GeocoderRequest
contenente
i termini di input e un metodo di callback da eseguire dopo aver ricevuto la risposta.
Il valore letterale dell'oggetto GeocoderRequest
contiene i seguenti campi:
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
Parametri obbligatori: devi fornire uno solo tra nei seguenti campi:
address
: l'indirizzo che vuoi geocodificare.
o
location
:LatLng
(oLatLngLiteral
) per cui vuoi ottenere il risultato più vicino, un indirizzo leggibile. Il geocodificatore esegue un codice geografico inverso. Consulta Inverti geocodifica per ulteriori informazioni.
o
placeId
: l'ID del luogo desiderato per ottenere l'indirizzo più vicino e leggibile. Scopri di più su il recupero di un indirizzo per un ID luogo.
Parametri facoltativi:
bounds
- IlLatLngBounds
entro il quale differenziare i risultati geocodificati in modo più evidente. Il parametrobounds
influenzerà solo, non del tutto, i risultati del geocodificatore. Consulta altre informazioni su differenziazione per area visibile .componentRestrictions
: utilizzata per limitare i risultati a una in un'area specifica. Leggi ulteriori informazioni su filtro dei componenti qui sotto.region
: il codice regione, specificato come specificato come sottotag di regione Unicode a due caratteri (non numerici). Nella maggior parte dei casi, casi, questi tag sono mappati direttamente al ccTLD familiare ("dominio di primo livello") valori a due caratteri. Il parametroregion
influenzerà solo non limiti completamente i risultati dal geocodificatore. Leggi ulteriori informazioni su differenziazione del codice regione di seguito.extraComputations
: l'unico valore consentito per questa impostazione èADDRESS_DESCRIPTORS
. Vedi descrittori degli indirizzi per ulteriori dettagli.fulfillOnZeroResults
: mantieni la promessa con lo stato ZERO_RESULT nel la risposta corretta. Ciò potrebbe essere opportuno perché, anche senza risultati di geocodifica, potrebbero esserci sono stati restituiti altri campi di livello di risposta. Vedi Evasione degli ordini su zero risultati.
Risposte di geocodifica
Il servizio Geocoding richiede un metodo di callback da eseguire al momento del recupero
dei risultati del geocodificatore. Questo callback deve passare due parametri
results
e un codice status
, in questo ordine.
Risultati geocodifica
L'oggetto GeocoderResult
rappresenta un singolo
risultato di geocodifica. Una richiesta di geocodifica può restituire più oggetti risultati:
results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, postcode_localities[]: string, types[]: string }, partial_match: boolean, place_id: string, postcode_localities[]: string, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } }
Questi campi sono descritti di seguito:
types[]
è un array che indica il tipo di indirizzo di il risultato restituito. Questo array contiene un insieme di zero o più tag identificando il tipo di caratteristica restituita nel risultato. Ad esempio, un geocodice di "Chicago" restituisce "locality" che indica che "Chicago" è un città e restituisce anche "political" che indica che si tratta di un dell'oggetto. Leggi ulteriori informazioni su tipi di indirizzi e componente indirizzo tipi di seguito.formatted_address
è una stringa contenente la stringa leggibile dell'indirizzo di questa località.Spesso, questo indirizzo equivale all'indirizzo postale. Tieni presente che alcune paesi, come il Regno Unito, non consentono la distribuzione di veri e propri indirizzi postali a causa di limitazioni di licenza.
L'indirizzo formattato è logicamente composto da uno o più indirizzi componenti. Ad esempio, l'indirizzo "111 8th Avenue, New York, NY" è costituito dai seguenti componenti: "111" (il numero civico), "8th Avenue" (il percorso), "New York" (la città) e "NY" (stato USA).
Non analizzare l'indirizzo formattato in modo programmatico. Dovresti invece usare i singoli componenti dell'indirizzo, che la risposta dell'API include in aggiunta nel campo dell'indirizzo formattato.
address_components[]
è un array contenente l'espressione separata applicabili a questo indirizzo.In genere, ogni componente dell'indirizzo contiene i seguenti campi:
types[]
è un array che indica il tipo di . Visualizza l'elenco di tipi supportati.long_name
è la descrizione testuale o il nome completo del indirizzo come restituito dal Geocoder.short_name
è un nome testuale abbreviato per l'indirizzo , se disponibile. Ad esempio, un componente dell'indirizzo per lo stato dell'Alaska potrebbe avere una metricalong_name
"Alaska" e unshort_name
di "AK" utilizzando l'abbreviazione postale a due lettere.
Prendi nota delle seguenti informazioni su
address_components[]
array:- L'array dei componenti dell'indirizzo può contenere più componenti rispetto
formatted_address
. - L'array non include necessariamente tutte le entità politiche
contenere un indirizzo, diverso da quelli inclusi nei
formatted_address
. Per recuperare tutte le entità politiche che contengono un indirizzo specifico, devi usare la geocodifica inversa, La latitudine/longitudine dell'indirizzo come parametro della richiesta. - Non è garantito che il formato della risposta rimanga lo stesso tra
richieste. In particolare, il numero di
address_components
varia in base all'indirizzo richiesto e può cambiare nel tempo in base all'indirizzo nello stesso indirizzo. Un componente può cambiare posizione nell'array. Il tipo di componente può cambiare. Un particolare componente può essere mancante in una risposta successiva.
Leggi ulteriori informazioni su tipi di indirizzi e componente indirizzo tipi di seguito.
-
partial_match
indica che il geocodificatore non è tornato una corrispondenza esatta per la richiesta originale, anche se è stata in grado di corrispondere a parte l'indirizzo richiesto. Ti consigliamo di esaminare la richiesta originale relativa a errori ortografici e/o un indirizzo incompleto.Molto spesso le corrispondenze parziali si verificano per indirizzi che non esistono nella località passata nella richiesta. Anche le corrispondenze parziali possono essere restituito quando una richiesta corrisponde a due o più sedi nella stessa località. Ad esempio, "Via Roma, RM" restituirà una corrispondenza parziale per Henry Street e Henrietta Street. Tieni presente che se una richiesta include componente dell'indirizzo con errori ortografici, il servizio di geocodifica può suggerire un'alternativa . Anche i suggerimenti attivati in questo modo verranno contrassegnati come parziali corrispondono.
place_id
è l'identificatore univoco di un luogo, che può essere utilizzato con altre API di Google. Ad esempio, puoi utilizzareplace_id
con Google Places API per ottenere i dettagli di un'attività locale, come numero di telefono, orari di apertura, recensioni degli utenti e altro ancora. Consulta le panoramica di Place ID.postcode_localities[]
è un array che indica tutte le località è contenuto in un codice postale ed è presente solo se il risultato è un codice postale che contiene più località.geometry
contiene le seguenti informazioni:location
contiene il valore di latitudine e longitudine geocodificati. Tieni presente che restituiamo questa posizione come oggettoLatLng
, non come oggetto come stringa formattata.location_type
memorizza dati aggiuntivi sull'oggetto in ogni località. Attualmente sono supportati i seguenti valori:ROOFTOP
indica che il risultato restituito rifletta un codice geografico preciso.RANGE_INTERPOLATED
indica che il risultato restituito riflette un'approssimazione (di solito su una strada) interpolati tra due punti precisi (come come incroci). Generalmente i risultati interpolati vengono restituiti quando i codici geografici del tetto non sono disponibili per un indirizzo civico.GEOMETRIC_CENTER
indica che il risultato restituito è il centro geometrico di una risultato come una polilinea (ad es. una strada) o un poligono (regione).APPROXIMATE
indica che il risultato restituito è approssimativo.
viewport
archivia l'area visibile consigliata per un risultato restituito.bounds
(facoltativamente restituito) memorizza i valoriLatLngBounds
che può contenere completamente il risultato restituito. Tieni presente che questi limiti potrebbero non corrispondere all'area visibile consigliata. (Per Ad esempio, San Francisco include Farallon Isole, che tecnicamente fanno parte della città, ma che non dovrebbero che deve essere restituito nell'area visibile).
Gli indirizzi verranno restituiti dal geocodificatore utilizzando l'interfaccia
l'impostazione della lingua o la lingua specificata al momento del caricamento del codice JavaScript dell'API
usando il parametro language
. Per ulteriori informazioni, vedi
localizzazione.)
Tipi di indirizzi e di componenti di indirizzo
L'array types[]
nella
GeocoderResult
indica
tipo di indirizzo. È possibile che venga restituito anche l'array types[]
all'interno di un
GeocoderAddressComponent
per indicare il tipo di componente dell'indirizzo. Indirizzi restituiti
dal geocodificatore possono avere più tipi; i tipi possono essere considerati tag.
Ad esempio, molte città sono taggate con i political
e
Tipo di locality
.
I seguenti tipi sono supportati e restituiti dal geocodificatore in entrambi i campi tipi di indirizzo e tipi di componenti di indirizzo:
street_address
indica un indirizzo preciso.route
indica un percorso denominato (ad esempio "US 101").intersection
indica un incrocio principale, di solito di due strade principali.political
indica un'entità politica. Di solito, questo tipo indica il poligono di qualche amministrazione civile.country
indica l'entità politica nazionale e pertanto è di solito è il tipo di ordine più alto restituito dal Geocoder.administrative_area_level_1
indica un'autorità civile di primo ordine inferiore a quella del paese. Negli Stati Uniti, i livelli amministrativi sono gli stati. Non tutte le nazioni mostrano questi a livello amministrativo. Nella maggior parte dei casi, admin_area_level_1 i nomi brevi corrisponderanno esattamente alle suddivisioni ISO 3166-2 e ad altre liste diffuse; Tuttavia, questo non è garantito in quanto i nostri risultati di geocodifica si basano su vari indicatori e dati sulla posizione.administrative_area_level_2
indica un'autorità civile di secondo ordine inferiore a quella del paese. Negli Stati Uniti, i livelli amministrativi sono contee. Non tutte le nazioni mostrano questi a livello amministrativo.administrative_area_level_3
indica un'autorità civile di terzo ordine inferiore a quella del paese. Questo tipo indica un ente civile minore. Non tutte le nazioni presentano questi livelli amministrativi.administrative_area_level_4
indica un ordine civile di quarto ordine inferiore a quella del paese. Questo tipo indica un ente civile minore. Non tutte le nazioni presentano questi livelli amministrativi.administrative_area_level_5
indica un'autorità civile di quinto ordine inferiore a quella del paese. Questo tipo indica un ente civile minore. Non tutte le nazioni presentano questi livelli amministrativi.administrative_area_level_6
indica un civile di sesto ordine inferiore a quella del paese. Questo tipo indica un ente civile minore. Non tutte le nazioni presentano questi livelli amministrativi.administrative_area_level_7
indica un'autorità civile di settimo ordine inferiore a quella del paese. Questo tipo indica un ente civile minore. Non tutte le nazioni presentano questi livelli amministrativi.colloquial_area
indica un nome alternativo di uso comune per l'entità.locality
indica una città o una città politica dell'oggetto.sublocality
indica una persona giuridica di primo ordine sotto una località. Per alcune località potrebbero essere disponibili i seguenti tipi aggiuntivi: Dasublocality_level_1
asublocality_level_5
. Ogni livello di circoscrizione è un'entità civile. Numeri più grandi indicano una minore geografica specifica.neighborhood
indica un quartiere denominatopremise
indica una località denominata, di solito un edificio o insieme di edifici con un nome comunesubpremise
indica un'entità di primo ordine sotto un nome posizione, di solito un singolo edificio all'interno di una serie di edifici con un nome comuneplus_code
indica un riferimento a località codificato, derivato da latitudine e longitudine. I Plus Code possono essere utilizzati in sostituzione di indirizzi in luoghi in cui non esistono (in cui gli edifici non sono numerati o le vie non hanno un nome). Vedi https://plus.codes per maggiori dettagli.postal_code
indica un codice postale utilizzato per gestire la posta all'interno del paese.natural_feature
indica una caratteristica naturale in evidenza.airport
indica un aeroporto.park
indica un parco denominato.point_of_interest
indica un punto d'interesse con nome. In genere, questi "PDI" sono entità locali di rilievo che non si adattano facilmente In un'altra categoria, ad esempio "Empire State Building" o "Torre Eiffel".
Un elenco di tipi vuoto indica che non esistono tipi noti per la dell'indirizzo, ad esempio Lieu-dit in Francia.
Oltre a quanto riportato sopra, i componenti dell'indirizzo possono includere i tipi riportati di seguito.
Nota: questo elenco non è completo e costituisce soggetti a modifiche.
floor
indica il piano dell'indirizzo di un edificio.establishment
in genere indica un luogo non ancora categorizzati.landmark
indica un luogo nelle vicinanze utilizzato come riferimento, per facilitare la navigazione.point_of_interest
indica un punto d'interesse con nome.parking
indica un parcheggio o una struttura di parcheggio.post_box
indica una casella postale specifica.postal_town
indica un raggruppamento di aree geografiche, comelocality
esublocality
, utilizzati per gli indirizzi postali in alcuni paesi.room
indica la stanza dell'indirizzo di un edificio.street_number
indica il numero civico esatto.bus_station
,train_station
etransit_station
indica la posizione di un autobus, di un treno o di un pubblico fermata di trasporto pubblico.
Codici di stato
Il codice status
può restituire uno dei seguenti valori:
"OK"
indica che non si sono verificati errori; l'indirizzo è stato analizzato correttamente e in è stato restituito almeno un geocodice."ZERO_RESULTS"
indica che il geocodice è riuscito, ma non ha restituito risultati. Questo può accadere se al geocodificatore è stato trasmesso unaddress
inesistente."OVER_QUERY_LIMIT"
indica che hai superato la tua quota."REQUEST_DENIED"
indica che la tua richiesta è stata rifiutata. La pagina web non è autorizzati a utilizzare il geocodificatore."INVALID_REQUEST"
indica in genere che la query (address
,components
olatlng
) mancante."UNKNOWN_ERROR"
indica che non è stato possibile inviare la richiesta elaborati a causa di un errore del server. La richiesta può avere esito positivo se Riprova."ERROR"
indica che la richiesta è scaduta o si è verificato un problema problema di contatto con i server di Google. La richiesta può avere esito positivo se Riprova.
In questo esempio, geocodiceghiamo un indirizzo e posizioniamo un indicatore in corrispondenza valori di latitudine e longitudine. Tieni presente che il gestore viene passato come di funzione anonima.
var geocoder; var map; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(-34.397, 150.644); var mapOptions = { zoom: 8, center: latlng } map = new google.maps.Map(document.getElementById('map'), mapOptions); } function codeAddress() { var address = document.getElementById('address').value; geocoder.geocode( { 'address': address}, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { alert('Geocode was not successful for the following reason: ' + status); } }); } <body onload="initialize()"> <div id="map" style="width: 320px; height: 480px;"></div> <div> <input id="address" type="textbox" value="Sydney, NSW"> <input type="button" value="Encode" onclick="codeAddress()"> </div> </body>
Differenziazione dell'area visibile
Puoi indicare al servizio di geocodifica di preferire i risultati all'interno di un
(espressa come riquadro di delimitazione). Per farlo, devi impostare
Parametro bounds
all'interno dell'oggetto GeocoderRequest
per definire i limiti di questa area visibile. Tieni presente che solo la differenziazione
preferisce i risultati entro i limiti; se esistono risultati più pertinenti
al di fuori di questi limiti, possono essere inclusi.
Ad esempio, un geocodice per "Winnetka" restituisce generalmente questo sobborgo di Chicago:
{ "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" }, "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" }
Tuttavia, specificare un parametro bounds
per definire un riquadro di delimitazione
per i risultati della San Fernando Valley di Los Angeles in questo geocodice di ritorno
il quartiere chiamato "Winnetka" in quella posizione:
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
Differenziazione del codice regione
Puoi impostare il servizio di geocodifica in modo che restituisca risultati parziali per una determinata
regione in modo esplicito utilizzando il parametro region
. Questo parametro
prende un codice regione, specificato come Unicode a due caratteri (non numerici)
della regione. Questi tag sono mappati direttamente a un ccTLD familiare ("dominio di primo livello")
valori a due caratteri come "uk" in "co.uk" ad esempio. In alcuni casi,
Il tag region
supporta anche i codici ISO-3166-1, che a volte
differiscono dai valori ccTLD ("GB" per "Gran Bretagna", ad esempio).
Quando utilizzi il parametro region
:
- Specifica un solo paese o una sola regione. Vengono ignorati più valori e potrebbe tradursi in una richiesta non andata a buon fine.
- Utilizza solo sottotag di regione a due caratteri (formato Unicode CLDR). Tutti gli altri comporteranno errori.
- Solo i paesi e le regioni elencati in Google I dettagli relativi alla copertura di Maps Platform sono supportati.
Le richieste di geocodifica possono essere inviate per ogni dominio in cui L'applicazione Google Maps offre la geocodifica. Tieni presente che la differenziazione preferisce solo i risultati per un dominio specifico; se vengono visualizzati risultati più pertinenti esistenti al di fuori di questo dominio, possono essere incluse.
Ad esempio, il codice geografico "Toledo" restituisce questo risultato, come predefinito per il servizio di geocodifica sia impostato su Stati Uniti:
{ "types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw" }
Un codice geografico per "Toledo" con il campo region
impostato su
'es'
(Spagna) restituirà la città spagnola:
{ "types":["locality","political"], "formatted_address":"Toledo, España", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Toledo", "short_name":"TO", "types":["administrative_area_level_2","political"] },{ "long_name":"Castilla-La Mancha", "short_name":"CM", "types":["administrative_area_level_1","political"] },{ "long_name":"España", "short_name":"ES", "types":["country","political"] }], "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y" }
Filtro dei componenti
Puoi impostare il servizio di geocodifica in modo che restituisca risultati relativi a indirizzi limitati
a un'area specifica, usando un filtro dei componenti. Specifica il filtro nel
componentRestrictions
. I valori di filtro supportano
gli stessi metodi di correzione ortografica e di corrispondenza parziale di altri metodi di geocodifica
richieste.
Il geocodificatore restituisce solo i risultati che corrispondono a tutto il componente. filtri corretti. Ciò significa che valuta le specifiche del filtro come AND, non come OPPURE
Un filtro dei componenti è costituito da uno o più dei seguenti elementi:
route
corrisponde al nome lungo o breve di un percorso.locality
corrisponde ai tipi di località e circoscrizioni.administrativeArea
corrisponde a tutti i livelli di area amministrativa.postalCode
corrisponde ai codici postali e ai prefissi dei codici postali.country
corrisponde al nome di un paese o a due lettere ISO 3166-1 il prefisso internazionale del paese. Nota: l'API segue lo standard ISO per che definiscono i paesi e il filtro funziona al meglio quando si utilizza codice ISO corrispondente del paese.
L'esempio seguente mostra l'utilizzo
Parametro componentRestrictions
in base al quale filtrare
country
e postalCode
:
function codeAddress() { geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
Evasione degli ordini su zero risultati
Per la geocodifica inversa, per impostazione predefinita la promessa viene interrotta il giorno status=ZERO_RESULTS
. Tuttavia,
i campi aggiuntivi dei livelli di risposta di plus_code
e address_descriptor
potrebbero essere
compilate in questo caso. Se il parametro fulfillOnZeroResults
è impostato su true,
la promessa non viene interrotta e questi campi aggiuntivi sono accessibili dalla promessa, se presente.
Di seguito è riportato un esempio di questo comportamento per la latitudine/longitudine in Antartide.
Anche se non ci sono risultati di geocodifica inversa, possiamo comunque stampare il Plus Code
nella promessa se impostiamo fulfillOnZeroResults=true
.
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(-75.290330, 38.653861); geocoder .geocode({ 'location': latlng, 'fulfillOnZeroResults': true, }) .then((response) => { console.log(response.plus_code); }) .catch((error) => { window.alert(`Error`); }); }
Descrittori di indirizzi
I descrittori di indirizzo includono informazioni aggiuntive che aiutano a descrivere una posizione utilizzando punti di riferimento e aree. Guarda la demo dei descrittori degli indirizzi per esplorare la funzionalità.
I descrittori di indirizzo possono essere abilitati tramite l'uso dell'extraComputations
. Includi extra_computations=ADDRESS_DESCRIPTORS
in una richiesta di geocodifica
, richiesta di geocodifica inversa
o una richiesta di geocodifica di luoghi
per ricevere descrittori di indirizzo nella risposta.
Esempio di geocodifica in luoghi
La seguente query contiene l'indirizzo di un luogo a Delhi.
function addressDescriptorPlaceIdLookup() { geocoder.geocode({ 'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q', 'extraComputations': ['ADDRESS_DESCRIPTORS'] }, function(results, status) { if (status == 'OK') { console.log(results[0].address_descriptor); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
Esempio di geocodifica inversa
La seguente query contiene il valore di latitudine/longitudine per una località in Delhi.
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(28.640964,77.235875); geocoder .geocode({ 'location': latlng, 'extraComputations': ["ADDRESS_DESCRIPTORS"], }) .then((response) => { console.log(response.address_descriptor); }) .catch((error) => { window.alert(`Error`); }); }
Esempio di descrittore di indirizzo
Un esempio di address_descriptor
è il seguente.
{ "address_descriptor" : { "areas" : [ { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Turkman Gate" }, "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs" }, { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Chandni Chowk" }, "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI" }, { "containment" : "NEAR", "display_name" : { "language_code" : "en", "text" : "Katar Ganj" }, "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY" } ], "landmarks" : [ { "display_name" : { "language_code" : "en", "text" : "Delite Cinema" }, "straight_line_distance_meters" : 29.9306755065918, "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM", "travel_distance_meters" : 418.7794799804688, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "establishment", "movie_theater", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "YES Bank" }, "straight_line_distance_meters" : 66.83731079101562, "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ", "travel_distance_meters" : 489.0340270996094, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "UCO Bank" }, "straight_line_distance_meters" : 25.38849639892578, "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM", "travel_distance_meters" : 403.2246398925781, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "Delhi By Cycle Meeting Point" }, "straight_line_distance_meters" : 44.02867126464844, "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM", "travel_distance_meters" : 97.41281890869141, "spatial_relationship" : "AROUND_THE_CORNER", "types" : [ "establishment", "point_of_interest", "tourist_attraction", "travel_agency" ] }, { "display_name" : { "language_code" : "en", "text" : "Axis Bank Branch" }, "straight_line_distance_meters" : 102.3495178222656, "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4", "travel_distance_meters" : 330.8566284179688, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] } ] } }
In ogni oggetto address_descriptor
sono presenti due array: landmarks
e
areas
. L'array landmarks
contiene fino a 5 risultati ordinati in ordine di
pertinenza data la vicinanza al coordinamento richiesto, il
prevalenza del punto di riferimento e della sua visibilità. Ogni risultato di punto di riferimento contiene
i seguenti valori:
place_id
è l'ID luogo del risultato dei punti di riferimento. Visualizza l'ID luogo Panoramica.display_name
è il nome visualizzato del punto di riferimento e contienelanguage_code
etext
.straight_line_distance_meters
è la distanza punto a punto in metri tra la coordinata di input e il risultato dei punti di riferimento.travel_distance_meters
è la distanza in metri percorsa attraverso la rete stradale (senza indicare i limiti stradali) tra la coordinata di input e il risultato dei punti di riferimento.spatial_relationship
è la relazione stimata tra la coordinata di input e il risultato dei punti di riferimento:"NEAR"
è la relazione predefinita quando non si applica nessuno dei seguenti casi."WITHIN"
quando la coordinata di input è contenuta entro i limiti della struttura associata al punto di riferimento."BESIDE"
quando la coordinata di input è direttamente adiacente al punto di accesso o al punto di accesso del punto di riferimento."ACROSS_THE_ROAD"
quando la coordinata di input è esattamente opposta al punto di riferimento sull'altro lato del percorso."DOWN_THE_ROAD"
quando la coordinata di input si trova lungo lo stesso percorso del punto di riferimento, ma non"BESIDES"
o"ACROSS_THE_ROAD"
."AROUND_THE_CORNER"
quando la coordinata di input si trova lungo una rotta perpendicolare come punto di riferimento (limitata a una singola svolta)."BEHIND"
quando la coordinata di input è spaziale vicina al punto di riferimento, ma lontana dal suo punto di accesso.types
sono i tipi di luogo del punto di riferimento.
L'oggetto areas
contiene fino a tre risposte e si limita ai luoghi che
rappresentare regioni di piccole dimensioni, come quartieri, sottodistretti e grandi
complessi. Le aree che contengono la coordinata richiesta sono elencate per prime e
ordinati dal più piccolo al più grande. Ogni risultato di areas
contiene quanto segue
valori:
place_id
è l'ID luogo del risultato delle aree. Visualizza l'ID luogo Panoramica.display_name
è il nome visualizzato dell'area e contienelanguage_code
etext
.containment
è la relazione di contenimento stimata tra la coordinata di input e il risultato delle aree:"NEAR"
è la relazione predefinita quando non si applica nessuno dei seguenti casi."WITHIN"
quando la coordinata di input è vicina al centro dell'area."OUTSKIRTS"
quando la coordinata di input è vicina al bordo dell'area.
Copertura descrittore dell'indirizzo
Questa funzionalità è disponibile solo in paesi.
Questa è una funzionalità in anteprima e vorremmo avere un feedback. Invia un'email all'indirizzo address-descriptors-feedback@google.com.
Geocodifica inversa (ricerca di indirizzi)
Il termine geocodifica si riferisce in genere alla traduzione di un testo leggibile indirizzo in una posizione su una mappa. Il processo per fare il contrario, tradurre una posizione sulla mappa in un indirizzo leggibile, è nota come geocodifica inversa.
Anziché specificare un address
testuale, utilizza una virgola separata
coppia latitudine/longitudine nel parametro location
.
L'esempio seguente geocodifica un valore di latitudine/longitudine e centra il valore mappa di quella posizione, visualizzando una finestra informativa con l'indirizzo formattato:
TypeScript
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.731, lng: -73.997 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodeLatLng(geocoder, map, infowindow); } ); } function geocodeLatLng( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const input = (document.getElementById("latlng") as HTMLInputElement).value; const latlngStr = input.split(",", 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.731, lng: -73.997 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodeLatLng(geocoder, map, infowindow); }); } function geocodeLatLng(geocoder, map, infowindow) { const input = document.getElementById("latlng").value; const latlngStr = input.split(",", 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } window.initMap = initMap;
Prova Sample
Tieni presente che nell'esempio precedente abbiamo mostrato il primo risultato
selezione di results[0]
. Il geocodificatore inverso restituisce spesso
più di un risultato. Gli indirizzi geocodificati non sono solo indirizzi postali, ma
per assegnare un nome geografico a una località. Ad esempio, quando geocodifica un punto
città di Chicago, il punto geocodificato potrebbe essere etichettato come un indirizzo civico,
come città (Chicago), come stato (Illinois) o come paese (Stati Uniti
Stati). Tutti sono indirizzi del geocodificatore. Il geocodificatore inverso restituisce tutti
di questi risultati.
Il geocodificatore inverso corrisponde a entità politiche (paesi, province, città e quartieri), vie e codici postali.
Ecco un esempio dell'elenco di indirizzi che può essere restituito dalla query precedente:
results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA" results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA" results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA" results[3].formatted_address: "Brooklyn, NY, USA" results[4].formatted_address: "New York, NY, USA" results[5].formatted_address: "Brooklyn, NY 11211, USA" results[6].formatted_address: "Kings County, NY, USA" results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA" results[8].formatted_address: "New York Metropolitan Area, USA" results[9].formatted_address: "New York, USA"
Gli indirizzi vengono restituiti in ordine decrescente. In genere,
più l'indirizzo esatto è il risultato più evidente, come in questo caso.
Tieni presente che restituiamo diversi tipi di indirizzi, dal più specifico
indirizzi a entità politiche meno specifiche come quartieri,
città, contee, stati ecc. Se desideri trovare una corrispondenza per un indirizzo più generico,
ti consigliamo di esaminare il campo results[].types
.
Nota: la geocodifica inversa non è un'indicazione esatta della scienza. Il geocodificatore cercherà di trovare la località indirizzabile più vicina entro una certa tolleranza.
Recupero di un indirizzo per un ID luogo
Specifica un placeId
per trovare l'indirizzo di un determinato ID luogo. La
l'ID luogo è un identificatore univoco che può essere utilizzato con altre API di Google. Per
Ad esempio, puoi fornire il valore placeId
restituito
API Roads per ottenere
per un punto agganciato. Per ulteriori informazioni sugli ID luogo, consulta
panoramica di Place ID.
Se fornisci un valore placeId
, la richiesta non può contenere alcuno
nei seguenti campi:
address
latLng
location
componentRestrictions
L'esempio seguente accetta un ID luogo, trova l'indirizzo corrispondente e centra la mappa su quella posizione. Viene visualizzata anche una finestra informativa che L'indirizzo formattato del luogo pertinente:
TypeScript
// Initialize the map. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.72, lng: -73.96 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodePlaceId(geocoder, map, infowindow); } ); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const placeId = (document.getElementById("place-id") as HTMLInputElement) .value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// Initialize the map. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.72, lng: -73.96 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodePlaceId(geocoder, map, infowindow); }); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId(geocoder, map, infowindow) { const placeId = document.getElementById("place-id").value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } window.initMap = initMap;