Es kann losgehen!

Bevor Sie mit der Entwicklung beginnen, lesen Sie bitte unsere Entwicklerdokumentation.

Die Google Maps JavaScript API aktivieren

Zum Einstieg führen wir Sie durch die Google Developers Console, wo Sie vorab Folgendes tun müssen:

  1. Ein Projekt erstellen oder auswählen
  2. Die Google Maps JavaScript API und zugehörige Dienste aktivieren
  3. Zugehörige Schlüssel erstellen
Weiter

Geocoding-Dienst

Übersicht

Geocoding bezeichnet die Umwandlung von Adressen wie „1600 Amphitheatre Parkway, Mountain View, CA“ in geografische Koordinaten wie „37.423021 Breite und -122.083739 Länge“, die Sie zum Platzieren von Markern oder zum Positionieren der Karte verwenden können.

Umgekehrtes Geocoding bezeichnet die Umwandlung geografischer Koordinaten in lesbare Adressen. Der Dienst zum umgekehrten Geocoding ermöglicht es Ihnen auch, anhand einer Orts-ID nach einer Adresse zu suchen.

Die Google Maps JavaScript API umfasst eine Geocoder-Klasse für dynamisches Geocoding und umgekehrtes Geocoding durch Nutzereingaben. Wenn Sie stattdessen ein Geocoding statischer, bekannter Adressen wünschen, lesen Sie die Dokumentation zum Geocoding-Webdienst.

Erste Schritte

Bevor Sie den Geocoding-Dienst in der Google Maps JavaScript API verwenden, müssen Sie zuerst sicherstellen, dass die Google Maps Geocoding API in der Google API Console im gleichen Projekt, das Sie für die Google Maps JavaScript API eingerichtet haben, aktiviert ist.

So zeigen Sie die Liste der aktivierten APIs an:

  1. Navigieren Sie zu Google API Console.
  2. Klicken Sie auf die Schaltfläche Select a project, wählen Sie das Projekt aus, das Sie für die Google Maps JavaScript API eingerichtet haben, und klicken Sie auf Open.
  3. Suchen Sie in der Liste der APIs im Dashboard nach Google Maps Geocoding API.
  4. Wenn die API in der Liste angezeigt wird, sind Sie startbereit. Wenn die API nicht in der Liste enthalten ist, aktivieren Sie sie:
    1. Wählen Sie oben auf der Seite ENABLE API aus, um den Tab Library anzuzeigen. Alternativ können Sie im Menü auf der linken Seite Library auswählen.
    2. Suchen Sie nach Google Maps Geocoding API und wählen Sie den Eintrag dann in der Ergebnisliste aus.
    3. Wählen Sie ENABLE aus. Nachdem der Vorgang abgeschlossen ist, wird die Google Maps Geocoding API in der Liste der APIs im Dashboard angezeigt.

Nutzungsbeschränkungen und Richtlinien

Kontingente

Folgende Nutzungsbeschränkungen gelten für den Geocoding-Dienst:

Verwendung des Geocoding-Dienstes mit dem Standard Plan

  • 2.500 kostenlose Anforderungen pro Tag, berechnet als Summe der clientseitigen und serverseitigen Abfragen; Abrechnung aktivierenaktivieren Sie die Abrechnung, um ein höheres Tageskontingent zu erhalten. Bei maximal 100.000 Anforderungen pro Tag werden 0,50 USD für 1000 weitere Anforderungen in Rechnung gestellt.
  • 50 Anforderungen pro Sekunde, berechnet als Summe der clientseitigen und serverseitigen Abfragen.

Verwendung des Geocoding-Dienstes mit dem Premium Plan

  • Übergreifendes kostenloses Tageskontingent von 100.000 Anforderungen pro 24 Stunden; weitere Anforderungen werden auf die für jeweils ein Jahr erworbenen Maps APIs Credits angerechnet.
  • Unbegrenzt clientseitige Anforderungen pro Sekunde, pro Projekt. Beachten Sie, dass die serverseitige API auf 50 Anforderungen pro Sekunde beschränkt ist.

Pro Nutzersitzung wird eine Beschränkung angewendet, unabhängig davon, wie viele Nutzer gemeinsam auf das gleiche Projekt zugreifen.

Diese Beschränkung pro Nutzersitzung verhindert die Nutzung von clientseitigen Diensten für Batchanforderungen wie Geocoding-Batchvorgänge. Verwenden Sie für Batchanforderungen den Google Maps Geocoding API-Webdienst.

Richtlinien

Die Nutzung des Geocoding-Dienstes muss im Einklang mit den für die Google Maps Geocoding API beschriebenen Richtlinien erfolgen.

Geocoding-Anforderungen

Der Zugriff auf den Geocoding-Dienst erfolgt asynchron, da dazu der Aufruf eines externen Servers durch Google Maps API erforderlich ist. Aus diesem Grund müssen Sie eine Callbackmethode übergeben, die bei Abschluss der Anforderung ausgeführt werden soll. Die Ergebnisse werden mit der Callbackmethode verarbeitet. Beachten Sie, dass der Geocoder mehr als ein Ergebnis zurückgeben kann.

Sie rufen den Geocoding-Dienst von Google Maps API in Ihrem Code über das Objekt google.maps.Geocoder auf. Mit der Methode Geocoder.geocode() wird eine Anforderung an den Geocoding-Dienst initiiert und ein Objektliteral GeocoderRequest übergeben, das die Eingabebedingungen und eine Callbackmethode enthält, die bei Eingang der Antwort ausgeführt wird.

Das Objektliteral GeocoderRequest besteht aus folgenden Feldern:

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

Erforderliche Parameter: Sie müssen genau eines der folgenden Felder angeben:

  • address — die Adresse, für die das Geocoding erfolgen soll.
  • location — der Wert LatLng (oder LatLngLiteral) für den Sie die nahegelegenste, visuell lesbare Adresse erhalten möchten. Vom Geocoder wird eine umgekehrte Geocodierung durchgeführt. Weitere Informationen finden Sie im Abschnitt Umgekehrtes Geocoding.
  • placeId — die Orts-ID des Orts, für den Sie die nächstgelegene visuell lesbare Adresse erhalten möchten. Die Orts-ID ist ein eindeutiger Bezeichner, der für andere Google APIs verwendet werden kann. Beispielsweise können Sie die placeId verwenden, die von der Google Maps Roads API zurückgegeben wurde, um die Adresse für einen Snap-Punkt abzurufen. Weitere Informationen zu Orts-IDs finden Sie unter Orts-ID Übersicht. Wenn Sie eine Orts-ID (placeId) übergeben, führt der Geocoder eine umgekehrte Geocodierung durch. Weitere Informationen finden Sie im Abschnitt Umgekehrtes Geocoding.

Optionale Parameter:

  • bounds — der Bereich LatLngBounds, für den die Geocoding-Ergebnisse bevorzugt werden sollen. Durch den Parameter bounds werden die Ergebnisse des Geocoders nur beeinflusst, aber nicht vollständig eingeschränkt. (Weitere Informationen finden Sie nachfolgend unter Viewport-Biasing.)
  • componentRestrictions — wird verwendet, um die Ergebnisse auf einen bestimmten Bereich zu beschränken. (Weitere Informationen finden Sie nachfolgend unter Filtern von Komponenten.)
  • region — der Regionscode als IANA-Sprach-Subtag region. In den meisten Fällen sind diese Tags direkt dem zweistelligen Ländercode der Top-Level-Domain (ccTLD) zugeordnet. Durch den Parameter region werden die Ergebnisse des Geocoders nur beeinflusst, aber nicht vollständig eingeschränkt. (Weitere Informationen finden Sie nachfolgend unter Regionscode-Biasing.

Geocoding-Antworten

Der Geocoding-Dienst erfordert eine Callbackmethode, die bei Eingang der Geocoder-Ergebnisse ausgeführt wird. Mit dieser Callbackmethode müssen zwei Parameters mit den Ergebnissen (results) und einem Statuscode (status) in dieser Reihenfolge übergeben werden.

Geocoding-Ergebnisse

Das Objekt GeocoderResult steht für ein einzelnes Geocoding-Ergebnis. 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 nachfolgend erläutert:

  • types[] ist ein Array, mit dem der Typ des zurückgegebenen Ergebnisses angegeben wird. Dieses Array enthält einen Satz mit null oder mehreren Tags, die den Typ der im Ergebnis zurückgegebenen Eigenschaft bestimmen. So gibt z. B. die Geocodierung von „Chicago“ des Ergebnis „locality“ zurück, das angibt, dass es sich bei „Chicago“ um eine Stadt handelt, sowie „political“, das „Chicago“ als Verwaltungseinheit identifiziert.
  • formatted_address ist eine Zeichenfolge mit der Adresse dieses Orts in lesbarer Form. Diese Adresse stimmt häufig mit der „Postanschrift“ überein, die von Land zu Land variieren kann. (Beachten Sie, dass einige Länder, z. B. Großbritannien, die Weitergabe echter Postanschriften aufgrund von Lizenzeinschränkungen nicht zulassen.) Diese Adresse besteht in der Regel aus mindestens einer Adresskomponente. Beispiel: Die Adresse „111 8th Avenue, New York, NY“ enthält separate Adresskomponenten für „111“ (Hausnummer), „8th Avenue“ (Straße), „New York“ (Stadt) und „NY“ (US-Bundesstaat). Diese Adresskomponenten sind nachfolgend aufgeführt. (Weitere Informationen zu Typen finden Sie nachfolgend unter Typen.
  • address_components[] ist ein Array, das wie oben beschrieben die einzelnen Adresskomponenten enthält.
  • 

    partial_match gibt an, dass der Geocoder kein genaues Ergebnis für die Anforderung zurückgegeben hat, jedoch eine Übereinstimmung mit einem Teil der angeforderten Adresse gefunden hat. Überprüfen Sie ggf. die Anforderung auf Tippfehler und/oder Unvollständigkeit.

    Teilübereinstimmungen treten am häufigsten bei Anschriften auf, die an dem von Ihnen in der Anforderung übergebenen Ort nicht existieren. Teilübereinstimmungen können auch zurückgegeben werden, wenn eine Anforderung mit mehr als einem Standort am selben Ort übereinstimmt. So wird für „21 Henr St, Bristol, UK“ eine Teilübereinstimmung für Henry Street und Henrietta Street zurückgegeben. Enthält eine Anforderung einen Adressbestandteil mit Tippfehlern, schlägt der Geocoder möglicherweise eine andere Adresse vor. Auf diese Weise ausgelöste Vorschläge werden ebenfalls als Teilübereinstimmung gekennzeichnet.

  • place_id ist ein eindeutiger Bezeichner eines Ortes, der für andere Google APIs verwendet werden kann. Beispielsweise können Sie die place_id mit der Bibliothek von Google Places API verwenden, um Informationen über ein lokales Unternehmen, wie Telefonnummer, Öffnungszeiten, Bewertungen usw. zu erhalten. Weitere Informationen finden Sie unter Orts-IDs – Übersicht.
  • postcode_localities[] ist ein Array, das alle in einer Postleitzahl enthaltenen Orte angibt. Das Array ist nur vorhanden, wenn das Ergebnis eine Postleitzahl mit mehreren Orten ist.
  • geometry enthält die folgenden Informationen:

    • location enthält die geocodierten Breiten- und Längengradangaben. Beachten Sie, dass dieser Standort als Objekt LatLng und nicht als formatierte Zeichenfolge zurückgegeben wird.
    • location_type enthält zusätzliche Daten über den angegebenen Ort. Folgende Werte werden derzeit unterstützt:

      • ROOFTOP gibt an, dass das zurückgegebene Ergebnis ein genauer Geocode ist.
      • RANGE_INTERPOLATED gibt an, dass es sich bei dem Ergebnis um eine Näherungsangabe (meist auf einer Straße) handelt, die sich zwischen zwei präzisen Punkten (z. B. Kreuzungen) befindet. Interpolierte Ergebnisse werden zurückgegeben, wenn präzise Geocodes für eine Postanschrift nicht verfügbar sind.
      • GEOMETRIC_CENTER gibt an, dass es sich bei dem Ergebnis um die geometrische Mitte eines Ergebnisses wie z. B. einer Polylinie (z. B. einer Straße) oder eines Polygons (einer Region) handelt.
      • APPROXIMATE gibt an, dass das zurückgegebene Ergebnis eine Näherungsangabe ist.

    • viewport enthält den empfohlenen Viewport für das zurückgegebene Ergebnis.
    • bounds (optional) enthält den Begrenzungsrahmen LatLngBounds, der das Ergebnis vollständig enthalten kann. Beachten Sie, dass diese Begrenzung evtl. nicht mit dem empfohlenen Viewport übereinstimmt. (Beispielsweise gehören zu San Francisco auch die Farallon-Inseln, die aber nicht im Viewport zurückgegeben werden sollen.)

Die Adressen werden vom Geocoder mit der vom Browser bevorzugten Spracheinstellung oder in der beim Laden von API JavaScript mithilfe des Parameters language definierten Sprache wiedergegeben. (Weitere Informationen finden Sie unter Lokalisierung.)

Typen von Adresskomponenten

Das Array types[] im zurückgegebenen Ergebnis gibt den Adresstyp an. Diese Typen können auch in Arrays vom Typ address_components[] zurückgegeben werden, um den Typ der jeweiligen Adresskomponente anzugeben. Adressen im Geocoder können mehrere Typen zugewiesen sein; die Typen können als „Tags“ betrachtet werden. So sind viele Städte bspw. mit den Typen political und locality getaggt.

Die folgenden Typen werden vom HTTP Geocoder unterstützt und zurückgegeben:

  • street_address bezeichnet eine genaue Anschrift.
  • route bezeichnet eine Straße mit einem Namen oder einer Nummer (z. B. „US 101“).
  • intersection bezeichnet eine wichtige Kreuzung, meist zweier Hauptstraßen.
  • political bezeichnet eine Verwaltungseinheit. Dieser Typ steht meist für ein Polygon einer öffentlichen Einrichtung.
  • country bezeichnet eine nationale Verwaltungseinheit und ist normalerweise der höchste Typ in der vom Geocoder zurückgegebenen Reihenfolge.
  • administrative_area_level_1 bezeichnet eine Verwaltungseinheit erster Ordnung unterhalb der Stufe „Land“. In den USA sind diese Verwaltungsebenen die Bundesstaaten. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_2 bezeichnet eine Verwaltungseinheit zweiter Ordnung unterhalb der Stufe „Land“. In den USA sind diese Verwaltungsebenen die Countys. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_3 bezeichnet eine Verwaltungseinheit dritter Ordnung unterhalb der Stufe „Land“. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_4 bezeichnet eine Verwaltungseinheit vierter Ordnung unterhalb der Stufe „Land“. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • administrative_area_level_5 bezeichnet eine Verwaltungseinheit fünfter Ordnung unterhalb der Stufe „Land“. Dieser Typ steht für eine kleine Verwaltungseinheit von geringerer Bedeutung. Diese Verwaltungsebenen bestehen jedoch nicht in allen Ländern.
  • colloquial_area bezeichnet eine allgemein verwendete Alternativbezeichnung der Einheit.
  • locality bezeichnet die Verwaltungseinheit einer Stadt mit Selbstverwaltung.
  • sublocality bezeichnet eine Verwaltungseinheit erster Ordnung unterhalb der Stufe „Stadt“. Einigen Orten kann zusätzlich einer der folgenden Typen zugewiesen werden: sublocality_level_1 bis sublocality_level_5. Jede dieser Ebenen ist eine Verwaltungseinheit. Je höher die Zahl, desto kleiner das geografische Gebiet.
  • neighborhood bezeichnet ein bestimmtes Viertel.
  • premise bezeichnet meist ein bestimmtes Gebäude oder eine Gebäudegruppe mit einer gemeinsamen Bezeichnung.
  • subpremise bezeichnet eine Einheit erster Ordnung unterhalb einer Gebäudegruppe, meist ein einzelnes Gebäude in einer Gebäudegruppe mit einer gemeinsamen Bezeichnung.
  • postal_code bezeichnet die Postleitzahl, die zur Adressierung von Post innerhalb eines Landes verwendet wird.
  • natural_feature bezeichnet ein landschaftliches Wahrzeichen.
  • airport bezeichnet einen Flughafen.
  • park bezeichnet einen bestimmten Park.

Eine leere Typenliste bedeutet, dass für einen bestimmten Adressbestandteil keine Typen vorhanden sind, wie z. B. im Falle des französischen Lieu-dit.

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

  • post_box bezeichnet eine bestimmte Postfachadresse.
  • street_number bezeichnet die genaue Hausnummer.
  • floor bezeichnet das Stockwerk eines Gebäudes.
  • room bezeichnet einen Raum in einem Gebäude.

Statuscodes

Mit dem Code status kann einer der folgenden Werte zurückgegeben werden:


    
  • "OK" gibt an, dass keine Fehler aufgetreten sind. Die Adresse wurde erfolgreich geparst, und es wurde mindestens ein Geocode zurückgegeben.
  • "ZERO_RESULTS" gibt an, dass das Geocoding erfolgreich war, aber keine Ergebnisse zurückgegeben hat. Dies kann eintreten, wenn dem Geocoder eine nicht existierende Adresse (address) übergeben wurde.
  • "OVER_QUERY_LIMIT" gibt an, dass Sie das Kontingent überschritten haben.
  • "REQUEST_DENIED" gibt an, dass die Anforderung abgelehnt wurde.
  • "INVALID_REQUEST" gibt normalerweise an, dass die Abfrage (address, components oder latlng) fehlt.
  • "UNKNOWN_ERROR" gibt an, dass die Anforderung aufgrund eines Serverfehlers nicht verarbeitet werden konnte. Möglicherweise ist die Anforderung beim nächsten Versuch erfolgreich.

In diesem Beispiel geocodieren wir eine Adresse und positionieren einen Marker an den zurückgegebenen Breiten- und Längenangaben. Beachten Sie das der Ziehpunkt als anonymes Funktionsliteral übergeben wird.

  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 anzeigen (geocoding-simple.html)

Umgekehrtes Geocoding (Adressensuche)

Der Begriff Geocoding bezieht sich auf das Übersetzen einer lesbaren Adresse in einen Ort auf einer Karte. Der gegenteilige Vorgang, das Übersetzen eines Ortes auf der Karte in eine lesbare Adresse, wird als umgekehrtes Geocoding bezeichnet.

Das umgekehrte Geocoding wird vom Geocoder direkt unterstützt. Statt einen Adresstext address zu erfassen, geben Sie eine durch Kommas getrennte Breiten-/Längenangabe im Parameter location an. Alternativ geben Sie eine Orts-ID (placeId) an, um die Adresse zu einer bestimmten Orts-ID zu finden.

Umgekehrtes Geocoding nach Standort

Im folgenden Beispiel wird eine Breiten-/Längenangabe geocodiert und die Karte am Standort zentriert. Hier wird ein Info-Fenster mit der formatierten Adresse angezeigt. Wir geben das zweite Ergebnis zurück, das weniger spezifisch ist als das erste (in diesem Fall der Name eines Viertels):

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 8,
    center: {lat: 40.731, lng: -73.997}
  });
  var geocoder = new google.maps.Geocoder;
  var infowindow = new google.maps.InfoWindow;

  document.getElementById('submit').addEventListener('click', function() {
    geocodeLatLng(geocoder, map, infowindow);
  });
}

function geocodeLatLng(geocoder, map, infowindow) {
  var input = document.getElementById('latlng').value;
  var latlngStr = input.split(',', 2);
  var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
  geocoder.geocode({'location': latlng}, function(results, status) {
    if (status === 'OK') {
      if (results[1]) {
        map.setZoom(11);
        var marker = new google.maps.Marker({
          position: latlng,
          map: map
        });
        infowindow.setContent(results[1].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert('No results found');
      }
    } else {
      window.alert('Geocoder failed due to: ' + status);
    }
  });
}
<div id="floating-panel">
  <input id="latlng" type="text" value="40.714224,-73.961452">
  <input id="submit" type="button" value="Reverse Geocode">
</div>
<div id="map"></div>
/* Always set the map height explicitly to define the size of the div
 * element that contains the map. */
#map {
  height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}
#floating-panel {
  position: absolute;
  top: 10px;
  left: 25%;
  z-index: 5;
  background-color: #fff;
  padding: 5px;
  border: 1px solid #999;
  text-align: center;
  font-family: 'Roboto','sans-serif';
  line-height: 30px;
  padding-left: 10px;
}
#floating-panel {
  position: absolute;
  top: 5px;
  left: 50%;
  margin-left: -180px;
  width: 350px;
  z-index: 5;
  background-color: #fff;
  padding: 5px;
  border: 1px solid #999;
}
#latlng {
  width: 225px;
}
 <!-- Replace the value of the key parameter with your own API key. -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 8,
    center: {lat: 40.731, lng: -73.997}
  });
  var geocoder = new google.maps.Geocoder;
  var infowindow = new google.maps.InfoWindow;

  document.getElementById('submit').addEventListener('click', function() {
    geocodeLatLng(geocoder, map, infowindow);
  });
}

function geocodeLatLng(geocoder, map, infowindow) {
  var input = document.getElementById('latlng').value;
  var latlngStr = input.split(',', 2);
  var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
  geocoder.geocode({'location': latlng}, function(results, status) {
    if (status === 'OK') {
      if (results[1]) {
        map.setZoom(11);
        var marker = new google.maps.Marker({
          position: latlng,
          map: map
        });
        infowindow.setContent(results[1].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert('No results found');
      }
    } else {
      window.alert('Geocoder failed due to: ' + status);
    }
  });
}

Beispiel anzeigen (geocoding-reverse.html).

Beachten Sie, dass im vorangehenden Beispiel das zweite Ergebnis angezeigt wurde (durch Auswahl von results[1]. Beachten Sie, dass das umgekehrte Geocoding häufig mehr als ein Ergebnis zurückgibt. Geocoding-Adressen sind nicht nur Postanschriften, sondern umfassen sämtliche geografischen Bezeichnungen für den Ort. Wenn Sie bspw. einen Punkt in Chicago geocodieren, kann dieser als Postanschrift, Stadt (Chicago), Bundesstaat (Illinois) oder Land (USA) gekennzeichnet sein. All diese Angaben sind für den Geocoder „Adressen“. Der umgekehrte Geocoder gibt alle diese Ergebnisse zurück.

Die umgekehrte Geocodierung gibt Übereinstimmungen mit Verwaltungseinheiten (Ländern, Provinzen, Städten, Stadtteilen), Postanschriften und Postleitzahlen zurück.

Im Folgenden sehen Sie die vollständige Liste der Ergebnisse, die von der vorhergehenden Abfrage zurückgegeben wurden.

results[0].formatted_address: "275-291 Bedford Ave, Brooklyn, NY 11211, USA",
results[1].formatted_address: "Williamsburg, NY, USA",
results[2].formatted_address: "New York 11211, USA",
results[3].formatted_address: "Kings, New York, USA",
results[4].formatted_address: "Brooklyn, New York, USA",
results[5].formatted_address: "New York, New York, USA",
results[6].formatted_address: "New York, USA",
results[7].formatted_address: "United States"

Die Adressen werden nach Relevanz in absteigender Reihenfolge zurückgegeben. Normalerweise wird die genaueste Adresse an erster Stelle angezeigt. Beachten Sie, dass verschiedene Adresstypen zurückgegeben werden, von der genauen Postanschrift bis hin zu weniger genauen Verwaltungseinheiten wie Stadtteilen, Städten, Countys, Bundesstaaten usw. Wenn Sie eine allgemeinere Adresse abgleichen möchten, ist es ggf. sinnvoll, das Feld results[].types zu überprüfen.

Hinweis: Umgekehrtes Geocoding ist keine exakte Wissenschaft. Es wird versucht, den nächstgelegenen Ort mit einer Adresse zu finden, wobei eine gewisse Toleranz angewendet wird.

Umgekehrtes Geocoding nach Orts-ID

Im folgenden Beispiel wird eine Orts-ID akzeptiert, die zugehörige Adresse ermittelt und die Karte um diesen Standort zentriert. Außerdem wird ein Info-Fenster mit der formatierten Adresse des jeweiligen Orts angezeigt.

// Initialize the map.
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 8,
    center: {lat: 40.72, lng: -73.96}
  });
  var geocoder = new google.maps.Geocoder;
  var infowindow = new google.maps.InfoWindow;

  document.getElementById('submit').addEventListener('click', function() {
    geocodePlaceId(geocoder, map, infowindow);
  });
}

// This function is called when the user clicks the UI button requesting
// a reverse geocode.
function geocodePlaceId(geocoder, map, infowindow) {
  var placeId = document.getElementById('place-id').value;
  geocoder.geocode({'placeId': placeId}, function(results, status) {
    if (status === 'OK') {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location
        });
        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert('No results found');
      }
    } else {
      window.alert('Geocoder failed due to: ' + status);
    }
  });
}
<div id="floating-panel">
  <!-- Supply a default place ID for a place in Brooklyn, New York. -->
  <input id="place-id" type="text" value="ChIJd8BlQ2BZwokRAFUEcm_qrcA">
  <input id="submit" type="button" value="Reverse Geocode by Place ID">
</div>
<div id="map"></div>
/* Always set the map height explicitly to define the size of the div
 * element that contains the map. */
#map {
  height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}
#floating-panel {
  position: absolute;
  top: 10px;
  left: 25%;
  z-index: 5;
  background-color: #fff;
  padding: 5px;
  border: 1px solid #999;
  text-align: center;
  font-family: 'Roboto','sans-serif';
  line-height: 30px;
  padding-left: 10px;
}
#floating-panel {
  width: 440px;
}
#place-id {
  width: 250px;
}
 <!-- Replace the value of the key parameter with your own API key. -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>
// Initialize the map.
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 8,
    center: {lat: 40.72, lng: -73.96}
  });
  var geocoder = new google.maps.Geocoder;
  var infowindow = new google.maps.InfoWindow;

  document.getElementById('submit').addEventListener('click', function() {
    geocodePlaceId(geocoder, map, infowindow);
  });
}

// This function is called when the user clicks the UI button requesting
// a reverse geocode.
function geocodePlaceId(geocoder, map, infowindow) {
  var placeId = document.getElementById('place-id').value;
  geocoder.geocode({'placeId': placeId}, function(results, status) {
    if (status === 'OK') {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location
        });
        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert('No results found');
      }
    } else {
      window.alert('Geocoder failed due to: ' + status);
    }
  });
}

Beispiel anzeigen (geocoding-place-id.html).

Viewport-Biasing

Sie können für den Geocoding-Dienst auch vorgeben, dass Ergebnisse innerhalb eines bestimmten Viewports (ausgedrückt als Begrenzungsrahmen) zu bevorzugen sind. Dazu legen Sie in der URL der Anforderung den Parameter bounds im Objektliteral GeocoderRequest fest, um den Begrenzungsrahmen dieses Viewports zu definieren. Beachten Sie, dass durch Biasing Ergebnisse innerhalb der Begrenzung nur bevorzugt werden. Sollten außerhalb der Begrenzung relevantere Ergebnisse vorhanden sein, können diese mit aufgenommen werden.

Eine Geocoding-Anforderung für „Winnetka“ gibt normalerweise diesen Vorort von Chicago zurück:

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

Definieren Sie jedoch den Parameter bounds, der einen Begrenzungsrahmen für das San Fernando Valley von Los Angeles definiert, so wird der Geocode des dortigen Stadtteils Winnetka zurückgegeben:

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

Verwenden Sie den Parameter region, um den Geocoding-Dienst auf eine bestimmte Region ausgerichtete Ergebnisse zurückgeben zu lassen. Dieser Parameter verwendet einen Regionscode, ausgedrückt als IANA-Sprach-Subtag region. In den meisten Fällen sind diese Tags direkt dem zweistelligen Ländercode der Top-Level-Domain (ccTLD) zugeordnet, z. B. wie „uk“ in „co.uk“. In einigen Fällen werden vom Tag region auch Codes gemäß ISO-3166-1 unterstützt, die sich von ccTLD-Werten unterscheiden können (z. B. „GB“ für „Großbritannien“).

Geocoding-Anforderungen können für alle Domänen gesendet werden, in denen Geocoding über die Google Maps-Anwendung bereitgestellt wird. Beachten Sie, dass durch Biasing Ergebnisse für eine bestimmte Domäne nur bevorzugt werden. Sollten außerhalb der Domäne relevantere Ergebnisse vorhanden sein, können diese mit aufgenommen werden.

Beispielsweise gibt eine Geocoding-Anforderung für „Toledo“ das folgende Ergebnis zurück, da die USA als Standarddomäne für den Geocoding-Dienst 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"
}

Eine Geocode für „Toledo“, bei dem das Feld region auf 'es' (Spanien) gesetzt ist, gibt dagegen die Stadt in Spanien 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 den Geocoding-Dienst Adressergebnisse zurückgeben lassen, die auf eine bestimmte Region beschränkt sind. Definieren Sie die Einschränkung mithilfe des Parameters componentRestrictions. Ein Filter besteht aus mindestens einem der folgenden Werte: route, locality, administrativeArea, postalCode oder country. Es werden nur Ergebnisse zurückgegeben, die mit allen Filtern übereinstimmen. Die Filterwerte unterstützen dieselben Methoden für Rechtschreibkorrektur und partielle Übereinstimmung wie andere Geocoding-Anforderungen.

In der folgenden Beispielfunktion wird der Parameter componentRestrictions verwendet, um nach country und postalCode zu filtern:

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

Feedback geben zu...

Google Maps JavaScript API
Google Maps JavaScript API