Geocoding-Dienst

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Übersicht

Bei der Geocoding-Umwandlung werden Adressen wie „"1600 Amphitheatre Parkway, Mountain View, CA&#;

Bei der umgekehrten Geocodierung werden geografische Koordinaten in eine für Menschen lesbare Adresse umgewandelt (siehe Umgekehrte Geocodierung (Adressensuche)).

Sie können auch den Geocoder verwenden, um die Adresse für eine bestimmte Orts-ID zu finden.

Die Maps JavaScript API bietet eine Geocoder-Klasse für das Geocoding und die umgekehrte Geocodierung anhand von Nutzereingaben. Wenn Sie stattdessen statische, bekannte Adressen geocodieren möchten, finden Sie entsprechende Informationen unter Geocoding-Webdienst.

Erste Schritte

Bevor Sie den Geocoding-Dienst in der Maps JavaScript API verwenden, muss in der Google Cloud Console in dem Projekt, das Sie für die Maps JavaScript API eingerichtet haben, die Geocoding API aktiviert sein.

So zeigen Sie die Liste der aktivierten APIs an:

  1. Rufen Sie die Google Cloud Console auf.
  2. Klicken Sie auf die Schaltfläche Projekt auswählen, wählen Sie das Projekt aus, das Sie für die Maps JavaScript API eingerichtet haben, und klicken Sie dann auf Öffnen.
  3. Suchen Sie im Dashboard in der Liste der APIs nach Geocoding API.
  4. Wenn die API in der Liste angezeigt wird, sind Sie startbereit. Wenn die API nicht aufgeführt ist, aktivieren Sie sie:
    1. Wähle oben auf der Seite API AKTIVIEREN aus, um den Tab Bibliothek aufzurufen. Alternativ kannst du im Menü auf der linken Seite Mediathek auswählen.
    2. Suchen Sie nach der Geocoding API und wählen Sie sie in der Ergebnisliste aus.
    3. Wähle AKTIVIEREN aus. Wenn der Vorgang abgeschlossen ist, wird die Geocoding API in der Liste der APIs im Dashboard angezeigt.

Preise und Richtlinien

Preise

Am 16. Juli 2018 traten für Maps, Routes und Places ein neues „Pay as you go“-Preismodell auf. Weitere Informationen zu den neuen Preisen und Nutzungslimits für die Verwendung des JavaScript Geocoding-Diensts finden Sie unter Nutzung und Abrechnung für die Geocoding API.

Ratenlimits

Beachten Sie die folgenden Hinweise zu Ratenbegrenzungen für zusätzliche Anfragen:

Die zusätzliche Ratenbegrenzung wird pro Nutzersitzung angewendet, unabhängig davon, wie viele Nutzer dasselbe Projekt verwenden. Beim ersten Laden der API wird Ihnen ein anfängliches Kontingent von Anfragen zugewiesen. Wenn Sie dieses Kontingent verwenden, erzwingt die API Ratenbegrenzungen für zusätzliche Anfragen pro Sekunde. Wenn innerhalb eines bestimmten Zeitraums zu viele Anfragen gestellt werden, gibt die API einen OVER_QUERY_LIMIT-Antwortcode zurück.

Das Ratenlimit pro Sitzung verhindert die Verwendung von clientseitigen Diensten für Batchanfragen, z. B. Geocoding-Batchvorgänge. Verwenden Sie für Batchanfragen den Geocoding API-Webdienst.

Richtlinien

Die Nutzung des Geocoding-Dienstes muss den Richtlinien für die Geocoding API entsprechen.

Geocoding-Anforderungen

Der Zugriff auf den Geocoding-Dienst ist asynchron, da die Google Maps API einen externen Server aufrufen muss. Aus diesem Grund muss eine Callback-Methode übergeben werden, die bei Abschluss der Anfrage ausgeführt wird. Diese Callback-Methode verarbeitet die Ergebnisse. Der Geocoder kann mehr als ein Ergebnis zurückgeben.

Sie greifen in Ihrem Code über das Konstruktorobjekt google.maps.Geocoder auf den Geocoding-Dienst der Google Maps API zu. Die Methode Geocoder.geocode() initiiert eine Anfrage an den Geocoding-Dienst und übergibt ihr ein GeocoderRequest-Objektliteral, das die Eingabebedingungen und eine Callback-Methode enthält, die nach Erhalt der Antwort ausgeführt werden soll.

Das Objektliteral GeocoderRequest enthält die folgenden Felder:

{
 address: string,
 location: LatLng,
 placeId: string,
 bounds: LatLngBounds,
 componentRestrictions: GeocoderComponentRestrictions,
 region: string
}

Erforderliche Parameter:Du musst nur eines der folgenden Felder angeben:

  • address: Die Adresse, die Sie geocodieren möchten.
    or
    location: Der LatLng (oder LatLngLiteral), für den Sie die nächste von Menschen lesbare Adresse erhalten möchten. Der Geocoder führt eine umgekehrte Geocodierung durch. Weitere Informationen finden Sie unter Umgekehrtes Geocoding.
    or
    placeId: Die Orts-ID des Orts, für den Sie die nächste Klartextadresse erhalten möchten. Weitere Informationen zum Abrufen einer Adresse für eine Orts-ID

Optionale Parameter:

  • bounds: Der LatLngBounds, in dem die Geocoding-Ergebnisse bevorzugt werden sollen. Der Parameter bounds wirkt sich nur auf die Ergebnisse des Geocoders aus und beschränkt ihn nicht vollständig. Weitere Informationen zur Verzerrung des Darstellungsbereichs finden Sie unten.
  • componentRestrictions: Wird verwendet, um die Ergebnisse auf einen bestimmten Bereich zu beschränken. Weitere Informationen zum Filtern von Komponenten finden Sie unten.
  • region: Der Regionscode, angegeben als zweistelliger, nicht numerischer Unicode-Regions-Tag. In den meisten Fällen sind diese Tags direkt den vertrauten zweistelligen ccTLD-Werten ("top-level domain") zugeordnet. Der Parameter region wirkt sich nur auf Ergebnisse des Geocoders aus und beschränkt diese nicht vollständig. Weitere Informationen zur Gewichtung der Regionscodes finden Sie weiter unten.

Geocoding-Antworten

Der Geocoding-Dienst erfordert eine Callback-Methode, die beim Abrufen der Ergebnisse des Geocoders ausgeführt wird. Dieser Callback sollte zwei Parameter übergeben, die den Code results und den Code status in dieser Reihenfolge enthalten.

Geocoding-Ergebnisse

Das Objekt GeocoderResult stellt ein einzelnes Geocoding-Ergebnis dar. Von einer Geocode-Anforderung können mehrere Ergebnisobjekte zurückgegeben werden.

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
 }
}

Diese Felder werden im Folgenden beschrieben:

  • types[] ist ein Array, das den Adresstyp des zurückgegebenen Ergebnisses angibt. Dieses Array enthält eine Reihe von null oder mehr Tags, die den Typ des im Ergebnis zurückgegebenen Merkmals identifizieren. Zum Beispiel wird mit dem Geocode von & quot;Chicago&t; Weitere Informationen zu Adresstypen und Adresskomponententypen finden Sie unten.
  • formatted_address ist ein String mit der für Menschen lesbaren Adresse dieses Standorts.

    Oft entspricht diese Adresse der Postanschrift. In einigen Ländern wie dem Vereinigten Königreich ist die Weitergabe echter Postanschriften aufgrund von Lizenzbeschränkungen nicht zulässig.

    Die formatierte Adresse besteht logisch aus einer oder mehreren Adresskomponenten. Die Adresse & #118; Beispiel: 8th Avenue, New York, NY&#;

    Parsen Sie die formatierte Adresse nicht programmatisch. Verwende stattdessen die einzelnen Adresskomponenten, die in der API-Antwort zusätzlich zum formatierten Adressfeld enthalten sind.

  • address_components[] ist ein Array, das die separaten Komponenten enthält, die für diese Adresse gelten.

    Jede Adresskomponente enthält normalerweise die folgenden Felder:

    • types[] ist ein Array, das den Typ der Adresskomponente angibt. Hier finden Sie eine Liste der unterstützten Typen.
    • long_name ist die vom Geocodierer zurückgegebene vollständige Textbeschreibung oder der Name der Adresskomponente.
    • short_name ist ein abgekürzter Textname für die Adresskomponente, falls verfügbar. Beispielsweise kann eine Adresskomponente für den US-Bundesstaat Alaska den long_name „Alaska" und den short_name der Spalte „AK“ mit der aus zwei Buchstaben bestehenden postalischen Abkürzung haben.

    Beachten Sie die folgenden Fakten zum Array address_components[]:

    • Das Array der Adresskomponenten kann mehr Komponenten als formatted_address enthalten.
    • Das Array enthält nicht unbedingt alle politischen Entitäten, die eine Adresse enthalten. Ausgenommen hiervon sind die im formatted_address enthaltenen. Wenn Sie alle politischen Entitäten abrufen möchten, die eine bestimmte Adresse enthalten, müssen Sie das umgekehrte Geocoding verwenden. Dabei wird der Breitengrad/Längengrad der Adresse als Parameter an die Anfrage übergeben.
    • Es kann nicht garantiert werden, dass das Format der Antwort bei Anfragen gleich bleibt. Insbesondere die Anzahl der address_components variiert je nach angeforderter Adresse und kann sich im Laufe der Zeit für dieselbe Adresse ändern. Eine Komponente kann die Position im Array ändern. Der Typ der Komponente kann sich ändern. Eine bestimmte Komponente fehlt möglicherweise in einer späteren Antwort.

    Weitere Informationen zu Adresstypen und Adresskomponententypen finden Sie unten.

  • partial_match gibt an, dass der Geocoder keine genaue Übereinstimmung für die ursprüngliche Anfrage zurückgegeben hat, aber teilweise mit der angeforderten Adresse übereinstimmt. Prüfen Sie die ursprüngliche Anfrage auf Rechtschreibfehler und/oder eine unvollständige Adresse.

    Teilübereinstimmungen treten am häufigsten bei Adressen auf, die nicht innerhalb des Orts vorhanden sind, den Sie in der Anfrage angeben. Teilübereinstimmungen können auch zurückgegeben werden, wenn eine Anfrage mit zwei oder mehr Standorten am selben Ort übereinstimmt. So gibt beispielsweise "Hillpar St, Bristol, UK&hl=de eine Teilübereinstimmung für die Henry Street und die Henrietta Street zurück. Wenn eine Anfrage eine falsch geschriebene Adresskomponente enthält, schlägt der Geocoding-Dienst möglicherweise eine alternative Adresse vor. Vorschläge, die auf diese Weise ausgelöst werden, werden auch als Teilübereinstimmung gekennzeichnet.

  • place_id ist eine eindeutige Kennung für einen Ort, die mit anderen Google APIs verwendet werden kann. Du kannst beispielsweise place_id mit der Google Places API verwenden, um Details zu einem lokalen Unternehmen wie Telefonnummer, Öffnungszeiten oder Rezensionen von Nutzern abzurufen. Weitere Informationen finden Sie unter Orts-ID.
  • postcode_localities[] ist ein Array, das alle Orte in einer Postleitzahl angibt. Es ist nur vorhanden, wenn das Ergebnis eine Postleitzahl ist, die mehrere Orte enthält.
  • geometry enthält die folgenden Informationen:

    • location enthält den geocodierten Breitengrad,Längengrad-Wert. Beachten Sie, dass dieser Standort als LatLng-Objekt zurückgegeben wird, nicht als formatierter String.
    • location_type speichert zusätzliche Daten zum angegebenen Standort. Die folgenden Werte werden derzeit unterstützt:
      • ROOFTOP gibt an, dass das zurückgegebene Ergebnis eine präzise Geocodierung darstellt.
      • RANGE_INTERPOLATED gibt an, dass das zurückgegebene Ergebnis eine Näherung darstellt (normalerweise auf einer Straße), die zwischen zwei präzise lokalisierten Punkten (z. B. Kreuzungen) interpoliert wurde. Interpolierte Ergebnisse werden in der Regel zurückgegeben, wenn für eine Adresse keine Geocodes auf dem Dach verfügbar sind.
      • GEOMETRIC_CENTER gibt an, dass das zurückgegebene Ergebnis der geometrische Mittelpunkt eines Ergebnisses wie einer Polylinie (z. B. einer Straße) oder eines Polygons (einer Region) ist.
      • APPROXIMATE gibt an, dass das zurückgegebene Ergebnis eine Näherung darstellt.

    • viewport speichert den empfohlenen Darstellungsbereich für das zurückgegebene Ergebnis.
    • bounds (optional zurückgegeben) speichert die LatLngBounds, die das zurückgegebene Ergebnis vollständig enthalten kann. Beachten Sie, dass diese Begrenzung evtl. nicht mit dem empfohlenen Viewport übereinstimmt. San Francisco umfasst z. B. die Farallon-Inseln, die technisch Teil der Stadt sind, aber nicht im Darstellungsbereich zurückgegeben werden sollten.

Die Adressen werden vom Geocodierer in der bevorzugten Spracheinstellung des Browsers oder in der Sprache zurückgegeben, die beim Laden des API-JavaScript-Codes mit dem Parameter language angegeben wurde. Weitere Informationen findest du unter Lokalisierung.

Typen von Adressen und Adresskomponenten

Das Array types[] im GeocoderResult gibt den Adresstyp an. Das types[]-Array kann auch innerhalb einer GeocoderAddressComponent zurückgegeben werden, um den Typ der jeweiligen Adresskomponente anzugeben. Vom Geocoder zurückgegebene Adressen können mehrere Typen haben. Die Typen können als Tags betrachtet werden. Viele Städte haben z. B. die Tags political und locality.

Die folgenden Typen werden vom Geocoder sowohl in den Adresstypen als auch in den Adresskomponenten unterstützt und zurückgegeben:

  • street_address gibt eine genaue Adresse an.
  • route gibt eine benannte Route an, z. B. "US 101".
  • intersection gibt eine größere Kreuzung an, üblicherweise von zwei Hauptstraßen.
  • political gibt eine politische Einheit an. Dieser Typ gibt in der Regel ein Polygon einer gewissen Verwaltung an.
  • country gibt die nationale politische Einheit an und ist normalerweise der höchste Typ, der vom Geocodierer zurückgegeben wird.
  • administrative_area_level_1 gibt eine erstrangige öffentliche Verwaltungseinheit unterhalb der Länderebene an. Innerhalb der USA sind diese Verwaltungsebenen die Bundesstaaten. Diese Verwaltungsebenen werden nicht von allen Ländern genutzt. In den meisten Fällen entsprechen die Kurznamen „admin_area_level_1“ den ISO 3166-2-Unterteilungen und anderen weit verbreiteten Listen. Dies ist jedoch nicht garantiert, da unsere Geocoding-Ergebnisse auf einer Vielzahl von Signalen und Standortdaten basieren.
  • administrative_area_level_2 gibt eine zweitrangige öffentliche Verwaltungseinheit unterhalb der Länderebene an. Innerhalb der USA sind diese Verwaltungsebenen die Countys. Diese Verwaltungsebenen werden nicht von allen Ländern genutzt.
  • administrative_area_level_3 gibt eine drittrangige öffentliche Verwaltungseinheit unterhalb der Länderebene an. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_4 gibt eine viertrangige öffentliche Verwaltungseinheit unterhalb der Länderebene an. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_5 gibt eine fünfte öffentliche Verwaltungseinheit unterhalb der Länderebene an. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_6 gibt eine sechstrangige öffentliche Verwaltungseinheit unterhalb der Länderebene an. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_7 gibt eine siebente Organisationseinheit unter der Länderebene an. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • colloquial_area gibt einen häufig verwendeten alternativen Namen für die Entität an.
  • locality gibt eine politische Stadt oder einen Ort an.
  • sublocality gibt eine erstrangige öffentliche Verwaltungseinheit unterhalb eines Orts an. Für einige Standorte gilt möglicherweise einer der zusätzlichen Typen: sublocality_level_1 bis sublocality_level_5. Jede dieser Ebenen ist eine Verwaltungseinheit. Größere Zahlen geben ein kleineres geografisches Gebiet an.
  • neighborhood gibt ein benanntes Viertel an
  • premise gibt einen benannten Ort an, normalerweise ein Gebäude oder eine Sammlung von Gebäuden mit einem gemeinsamen Namen.
  • subpremise gibt eine erstrangige Entität unterhalb eines benannten Orts an, normalerweise ein einzelnes Gebäude innerhalb eines Gebäudekomplexes mit einem gemeinsamen Namen.
  • plus_code gibt einen codierten Standortverweis an, der aus Breiten- und Längengrad abgeleitet wird. Plus Codes können als Ersatz für Adressen an Orten verwendet werden, an denen sie nicht vorhanden sind (wo Gebäude nicht nummeriert sind oder Straßen nicht benannt sind). Weitere Informationen findest du unter https://plus.codes.
  • postal_code gibt eine Postleitzahl an, die zur Adressierung von Postsendungen innerhalb des Landes verwendet wird.
  • natural_feature weist auf ein bekanntes natürliches Merkmal hin.
  • airport gibt einen Flughafen an.
  • park gibt einen benannten Park an.
  • point_of_interest gibt einen benannten POI an. In der Regel sind diese POIs bekannte lokale Objekte, die sich nicht leicht in eine andere Kategorie einfügen lassen, z. B. an ein Empire State Building oder den Eiffelturm.

Wenn die Liste leer ist, gibt es keine bekannten Typen für die jeweilige Adresskomponente, z. B. Lieu-dit in Frankreich.

Zusätzlich können die Adresskomponenten die folgenden Typen enthalten.

Hinweis: Diese Liste ist nicht vollständig und kann sich ändern.

  • floor gibt die Etage einer Gebäudeadresse an.
  • establishment gibt normalerweise einen Ort an, der noch nicht kategorisiert wurde.
  • landmark gibt einen Ort in der Nähe an, der zur Orientierung dient.
  • point_of_interest gibt einen benannten POI an.
  • parking gibt einen Parkplatz oder eine Parkstruktur an.
  • post_box gibt einen bestimmten Briefkasten an.
  • postal_town gibt eine Gruppe geografischer Regionen wie locality und sublocality an, die in einigen Ländern für Postanschriften verwendet werden.
  • room gibt den Raum innerhalb einer Gebäudeadresse an.
  • street_number gibt die genaue Hausnummer an.
  • bus_station, train_station und transit_station geben den Standort einer Bus-, Zug- oder öffentlichen Haltestelle an.

Statuscodes

Der Code status kann einen der folgenden Werte zurückgeben:

  • "OK" gibt an, dass keine Fehler aufgetreten sind. Die Adresse wurde erfolgreich geparst und mindestens ein Geocode zurückgegeben.
  • "ZERO_RESULTS" gibt an, dass der Geocode erfolgreich war, aber keine Ergebnisse zurückgegeben hat. Dieser Fehler kann auftreten, wenn dem Geocoder ein nicht vorhandenes address übergeben wurde.
  • "OVER_QUERY_LIMIT" zeigt an, dass Sie Ihr Kontingent überschritten haben.
  • "REQUEST_DENIED" zeigt an, dass Ihre Anfrage abgelehnt wurde. Die Webseite darf nicht den Geocoder verwenden.
  • "INVALID_REQUEST" zeigt im Allgemeinen an, dass die Abfrage (address, components oder latlng) fehlt.
  • "UNKNOWN_ERROR" gibt an, dass die Anfrage aufgrund eines Serverfehlers nicht verarbeitet werden konnte. Die Anfrage ist möglicherweise erfolgreich, wenn Sie es noch einmal versuchen.
  • "ERROR" gibt an, dass das Zeitlimit für die Anfrage überschritten wurde oder dass ein Problem beim Kontaktieren der Google-Server aufgetreten ist. Die Anfrage ist möglicherweise erfolgreich, wenn Sie es noch einmal versuchen.

In diesem Beispiel wird eine Adresse geocodiert und zu den zurückgegebenen Breiten- und Längengradwerten eine Markierung hinzugefügt. Der Handler wird als anonymes Funktionsliteral übergeben.

  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>

Beispiel ansehen

Viewport-Biasing

Sie können den Geocoding-Dienst anweisen, Ergebnisse innerhalb eines bestimmten Darstellungsbereichs (dargestellt als Begrenzungsrahmen) zu bevorzugen. Dazu legst du den Parameter bounds im Objektliteral GeocoderRequest fest, um die Grenzen dieses Darstellungsbereichs zu definieren. Beachten Sie, dass die Gewichtung Ergebnisse innerhalb der Grenzen nur bevorzugt. Wenn außerhalb der Grenzen relevantere Ergebnisse vorhanden sind, werden diese möglicherweise einbezogen.

Ein Geocode für "Winnetka" liefert im Allgemeinen diesen Vorort von 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"
}

Wenn jedoch ein bounds-Parameter angegeben wird, der einen Begrenzungsrahmen für das San Fernando Valley von Los Angeles definiert, ergibt sich dieser Geocode, der den Stadtteil &Wintka an diesem Standort zurückgibt:

{
  "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"
}

Regionscode-Biasing

Mit dem Parameter region können Sie den Geocoding-Dienst so einstellen, dass er nach bestimmten Regionen gewichtete Ergebnisse zurückgibt. Für diesen Parameter wird ein Regionscode verwendet, der als zweistelliges (nicht numerisches) Unicode-Regions-Tag angegeben ist. Diese Tags sind direkt den bekannten zweistelligen ccTLD-Werten ("top-level domain") zugeordnet, z. B. in "co.uk". In einigen Fällen unterstützt das Tag region auch ISO-3166-1-Codes, die sich teilweise von den ccTLD-Werten unterscheiden (z. B. „&GB“ für „Vereinigtes Königreich“).

Wenn Sie den Parameter region verwenden:

  • Geben Sie nur ein Land oder eine Region an. Mehrere Werte werden ignoriert und können zu einer fehlgeschlagenen Anfrage führen.
  • Verwenden Sie nur zweistellige Regions-Subtags (Unicode CLDR-Format). Alle anderen Eingaben führen zu Fehlern.
  • Es werden nur die Länder und Regionen unterstützt, die in den Details zur Google Maps Platform-Abdeckung aufgeführt sind.

Geocoding-Anfragen können für jede Domain gesendet werden, in der die Hauptanwendung von Google Maps Geocoding unterstützt. Beachten Sie, dass die Gewichtung Ergebnisse für eine bestimmte Domain nur bevorzugt. Wenn außerhalb der Domain relevantere Ergebnisse vorhanden sind, können diese hinzugefügt werden.

Ein Geocode für "Toledo" gibt beispielsweise dieses Ergebnis zurück, da als Standarddomain für den Geocoding-Dienst die USA festgelegt sind:

{
  "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"
}

Ein Geocode für „Toledo“ mit dem Feld region auf 'es' (Spanien) gibt die spanische Stadt zurück:

{
  "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"
}

Filtern von Komponenten

Sie können mithilfe eines Komponentenfilters festlegen, dass der Geocoding-Dienst Adressergebnisse zurückgibt, die auf einen bestimmten Bereich beschränkt sind. Gib den Filter im Parameter componentRestrictions an. Filterwerte unterstützen dieselben Methoden für Rechtschreibkorrektur und teilweise Übereinstimmung wie andere Geocoding-Anfragen.

Der Geocoder gibt nur die Ergebnisse zurück, die allen Komponentenfiltern entsprechen. Das heißt, die Filterspezifikationen werden als UND und nicht als OR ausgewertet.

Ein Komponentenfilter besteht aus mindestens einem der folgenden Elemente:

  • route entspricht dem langen oder kurzen Namen einer Route.
  • locality stimmt mit Ortstypen und Ortsteiltypen überein.
  • administrativeArea entspricht allen Ebenen des Verwaltungsgebiets.
  • postalCode stimmt mit Postleitzahlen und Postleitzahlenpräfixen überein.
  • country entspricht einem Ländernamen oder einem aus zwei Buchstaben bestehenden ISO 3166-1-Ländercode. Hinweis: Die API entspricht dem ISO-Standard für die Länderauswahl. Die Filterung funktioniert am besten, wenn der entsprechende ISO-Code des Landes verwendet wird.

Das folgende Beispiel zeigt die Verwendung des Parameters componentRestrictions zum Filtern nach country und 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);
  }
});
}

Umgekehrtes Geocoding (Adressensuche)

Der Begriff Geocoding bezieht sich im Allgemeinen auf die Umwandlung einer von Menschen lesbaren Adresse in eine Position auf einer Karte. Das Umkehren, d. h. die Übersetzung eines Orts auf der Karte in eine von Menschen lesbare Adresse, wird als umgekehrte Geocodierung bezeichnet.

Geben Sie statt eines Texts für address ein durch Kommas getrenntes Paar aus Längen- und Breitengrad im Parameter location an.

Im folgenden Beispiel wird ein Breiten-/Längengradwert geocodiert und die Karte an diesem Standort zentriert. Daraufhin wird ein Infofenster mit der formatierten Adresse angezeigt:

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;
Beispiel ansehen

Beispiel ausprobieren

Im vorherigen Beispiel haben wir das erste Ergebnis durch die Auswahl von results[0] angezeigt. Der umgekehrte Geocoder gibt häufig mehr als ein Ergebnis zurück. Geocodierte Adressen sind nicht nur Postanschriften, sondern jede Art, einen Ort geografisch zu benennen. Wenn Sie beispielsweise einen Punkt in der Stadt Chicago geocodieren, kann dieser als Straßenadresse, als Stadt (Chicago), als Bundesstaat (Illinois) oder als Land (USA) gekennzeichnet sein. All diese Angaben sind für den Geocoder „Adressen“. Der umgekehrte Geocoder gibt alle Ergebnisse zurück.

Der umgekehrte Geocoder ordnet politische Entitäten (Länder, Provinzen, Städte und Stadtteile), Adressen und Postleitzahlen zu.

Hier sehen Sie ein Beispiel für eine Liste mit Adressen, die bei der obigen Abfrage zurückgegeben werden können:

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"

Die Adressen werden nach Relevanz in absteigender Reihenfolge zurückgegeben. Im Allgemeinen ist die genaueste Adresse das auffälligste Ergebnis, wie es in diesem Fall der Fall ist. Beachten Sie, dass verschiedene Arten von Adressen zurückgegeben werden, von den spezifischsten Adressen bis hin zu den weniger genauen politischen Verwaltungseinheiten wie Stadtteile, Städte, Landkreise, Bundesländer usw. Wenn Sie eine allgemeinere Adresse abgleichen möchten, können Sie das Feld results[].types verwenden.

Hinweis: Die umgekehrte Geocodierung ist keine exakte Wissenschaft. Der Geocoder versucht, den nächstgelegenen adressierbaren Standort innerhalb einer bestimmten Toleranz zu finden.

Adresse für Orts-ID abrufen

Geben Sie einen placeId an, um die Adresse für eine bestimmte Orts-ID zu ermitteln. Die Place ID ist eine eindeutige Kennung, die mit anderen Google APIs verwendet werden kann. Beispielsweise können Sie die von der Roads API zurückgegebene placeId angeben, um die Adresse für einen Andockpunkt abzurufen. Weitere Informationen zu Orts-IDs finden Sie unter Orts-ID.

Wenn Sie einen placeId angeben, darf die Anfrage keines der folgenden Felder enthalten:

  • address
  • latLng
  • location
  • componentRestrictions

Im folgenden Beispiel wird eine Orts-ID akzeptiert, die entsprechende Adresse ermittelt und die Karte an diesem Standort zentriert. Außerdem wird ein Infofenster mit der formatierten Adresse des entsprechenden Orts angezeigt:

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;
Beispiel ansehen

Beispiel ausprobieren