Servizio di geocodifica

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:

  1. Vai alla sezione Console Google Cloud.
  2. 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.
  3. Nell'elenco delle API sulla Dashboard, cerca API Geocoding.
  4. Se vedi l'API nell'elenco, non devi eseguire altre operazioni. Se l'API non è elencata, abilitala:
      .
    1. Nella parte superiore della pagina, seleziona ABILITA API per visualizzare lo stato Scheda Raccolta. In alternativa, dal menu laterale a sinistra, Seleziona Libreria.
    2. Cerca API Geocoding, poi selezionala dalla dei risultati di ricerca.
    3. 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 (o LatLngLiteral) 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 - Il LatLngBounds entro il quale differenziare i risultati geocodificati in modo più evidente. Il parametro bounds 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 parametro region 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 metrica long_name "Alaska" e un short_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 utilizzare place_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 oggetto LatLng, 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 valori LatLngBounds 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: Da sublocality_level_1 a sublocality_level_5. Ogni livello di circoscrizione è un'entità civile. Numeri più grandi indicano una minore geografica specifica.
  • neighborhood indica un quartiere denominato
  • premise indica una località denominata, di solito un edificio o insieme di edifici con un nome comune
  • subpremise 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 comune
  • plus_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, come locality e sublocality, 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 e transit_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 un address 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 o latlng) 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>

Visualizza esempio.

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 contiene language_code e text.
  • 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 contiene language_code e text.
  • 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;
Visualizza esempio

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;
Visualizza esempio

Prova Sample