Es kann losgehen!

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

Die Google Maps Geocoding 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 Geocoding API aktivieren
  3. Zugehörige Schlüssel erstellen
Weiter

Optimieren der Kontingentnutzung beim Geocoding

Geocoding bezeichnet die Umwandlung von Adressen (z. B. 1600 Amphitheatre Parkway, Mountain View, CA) in geografische Koordinaten (z. B. 37.423021 und -122.083739), die Sie zum Platzieren von Markern oder zum Positionieren der Karte verwenden können. Die Google Maps APIs stellen zwei Ansätze für Geocoding-Vorgänge zur Verfügung:

  • Clientseitiges Geocoding wird im Browser ausgeführt, in der Regel als Reaktion auf eine Nutzeraktion. Die Google Maps JavaScript API stellt Klassen zur Verfügung, die die Anforderungen für Sie durchführen. Dieser Ansatz wird in der Dokumentation zur Google Maps JavaScript API beschrieben.
  • HTTP-serverseitiges Geocoding ermöglicht es Ihrem Server, Geocodes direkt bei den Google-Servern abzufragen. Die Google Maps Geocoding API ist der Webdienst, der diese Funktionalität bereitstellt. In der Regel vernetzen Sie diesen Dienst mit anderem Code, der auf Serverseite ausgeführt wird. Serverseitiges Geocoding wird in der Dokumentation zur Google Maps Geocoding API beschrieben.

Beispiele für clientseitiges und serverseitiges Geocoding

Nachfolgend finden Sie ein Beispiel für clientseitiges Geocoding, in dem eine Adresse geocodiert, die Mitte der Karte an diesen Standort verschoben und an dieser Stelle ein Marker hinzugefügt wird:

geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  }
});

Weitere Beispiele finden Sie in der Dokumentation zur Google Maps JavaScript API.

Nachfolgend finden Sie ein Beispiel, in dem eine serverseitige Geocoding-Anforderung mittels Python durchgeführt wird:

import urllib2

address="1600+Amphitheatre+Parkway,+Mountain+View,+CA"
key="my-key-here"
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key)

response = urllib2.urlopen(url)
jsongeocode = response.read()

Hierdurch wird ein JSON-Objekt mit folgendem Inhalt erstellt:

{
  "status": "OK",
  "results": [ {
    "types": street_address,
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": street_number
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": route
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "San Jose",
      "short_name": "San Jose",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Santa Clara",
      "short_name": "Santa Clara",
      "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" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": postal_code
    } ],
    "geometry": {
      "location": {
        "lat": 37.4220323,
        "lng": -122.0845109
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188847,
          "lng": -122.0876585
        },
        "northeast": {
          "lat": 37.4251799,
          "lng": -122.0813633
        }
      }
    }
  } ]
}

Der serverseitige Geocoder stellt darüber hinaus ein XML-Format als Alternative zu JSON zur Verfügung. Weitere Beispiele finden Sie in der Dokumentation zur Google Maps Geocoding API und zu den Clientbibliotheken für Python und andere Sprachen.

Überlegungen zu Kontingenten

Die in diesem Dokument skizzierten Strategien werden auf der Grundlage von Geocoding-Kontingenten und -Beschränkungen umgesetzt.

Wenn der Standard Plan gewählt wird, gilt für alle Geocoding-Anforderungen, sei es clientseitig über den Browser oder serverseitig über den Google Maps Geocoding API-Webdienst, ein Kontingent von 2.500 Anforderungen pro Tag. Alle Anforderungen eines Tages werden auf das Kontingent für Ihr Projekt angerechnet. Um auf höhere tägliche Kontingente zuzugreifen, aktivieren Sie die nutzungsbasierte Zahlung, wie im Leitfaden zu Nutzungsbeschränkungen erläutert wird.

Neben täglichen Kontingentbeschränkungen ist der Geocoding-Dienst auf 50 QPS (Queries per Second, Abfragen pro Sekunde) beschränkt, die als die Summe der clientseitigen und serverseitigen Abfragen berechnet werden.

Wenn clientseitige Geocoding-Anforderungen in regelmäßigen Intervallen ausgeführt werden, beispielsweise in einer mobilen App, geben Ihre Anforderungen möglicherweise Fehler zurück, wenn alle Nutzer gleichzeitig Anforderungen durchführen (beispielsweise alle in der gleichen Sekunde jeder Minute). Ziehen Sie eine der folgenden Lösungen in Betracht, um dies zu vermeiden:

  • Setzen Sie eine Caching-Strategie um.
  • Führen Sie die Anforderungen in zufälligen Intervallen durch (Jitter). Stellen Sie sicher, dass die Anforderungen des Nutzerkreises zufällig durchgeführt werden.
  • Wenn Sie Entwicklungsvorgänge für Android durchführen, verwenden Sie eine ungenaue Weckwiederholung.
  • Wenn Sie Entwicklungsvorgänge für Android durchführen, wählen Sie eine geeignete Standortstrategie.

Für Kunden mit Google Maps APIs Premium Plan bieten die APIs höhere tägliche Kontingente. Weitere Informationen zu Kontingenten für den Google Maps APIs Premium Plan finden Sie im Leitfaden zu Nutzungsraten und -beschränkungen für den Premium Plan. Wenn Sie auch bei Verwendung vom Google Maps APIs Premium Plan an Kontingentgrenzen stoßen, reichen Sie eine Supportanfrage im Google Cloud Support Portal ein.

Überlegungen zum Caching

Die Nutzungsbedingungen von Google Maps APIs gestatten Ihnen das Caching von Geocodes (d. h. sie werden für einen begrenzten Zeitraum auf dem Server gespeichert). Caching kann nützlich sein, wenn Sie wiederholt nach derselben Adresse suchen müssen. Bedenken Sie jedoch, dass sich die Geocoding-Ergebnisse ändern, da unsere Daten immer genauer werden. Daher sollten Sie auch zwischengespeicherte Daten in regelmäßigen Abständen aktualisieren, um sicherzustellen, dass Sie die besten Geocodes für Ihre Orte erhalten.

Wann sollte clientseitiges Geocoding verwendet werden?

Die kurze Antwort lautet „fast immer“. Hierfür gibt es folgende Gründe:

  • Clientseitige Anforderungen und Antworten bieten Nutzern ein schnelleres, interaktiveres Erlebnis.
  • Eine clientseitige Anforderung kann Informationen enthalten, die die Geocoding-Qualität verbessern: Nutzersprache, Region und Viewport.

Das clientseitige Geocoding eignet sich insbesondere dann am besten, wenn die Geocoding-Adressen auf der Eingabe des Nutzers basieren.

Es gibt zwei Basisarchitekturen für clientseitiges Geocoding:

  • Sie führen den Geocoding-Vorgang und die Darstellung vollständig im Browser durch. Angenommen, der Nutzer gibt eine Adresse auf Ihrer Seite ein. Diese wird von Ihrer Anwendung geocodiert. Anschließend verwendet die Seite den Geocode, um einen Marker auf der Karte zu erstellen. Oder Ihre App führt eine einfache Analyse mithilfe des Geocodes durch. Es werden keine Daten an den Server gesendet, wodurch die Datenlast auf dem Server reduziert wird.
  • Sie führen den Geocoding-Vorgang im Browser durch und senden ihn dann an den Server. Angenommen, der Nutzer gibt eine Adresse auf Ihrer Seite ein. Diese wird von Ihrer Anwendung im Browser geocodiert. Die App sendet die Daten dann an den Server. Der Server antwortet mit einigen Daten, beispielsweise mit nahegelegenen Points of Interest. Dadurch erhalten Sie die Möglichkeit, eine Antwort basierend auf Ihren eigenen Daten anzupassen und den Geocode bei Bedarf auch zwischenzuspeichern. Durch das Caching können Sie noch weitere Optimierungen vornehmen. Sie können die Adresse auf dem Server abfragen, um festzustellen, ob Sie kürzlich Geocode dafür zwischengespeichert haben. Wenn im Cache keine Übereinstimmung vorhanden ist, geben Sie kein Ergebnis an den Browser zurück. Lassen Sie den Browser das Ergebnis geocodieren und zwecks Caching an den Server zurücksenden.

Wann sollte serverseitiges Geocoding verwendet werden?

Serverseitiges Geocoding eignet sich am besten für Anwendungen, die von Ihnen verlangen, dass Sie Adressen ohne Eingabe von einem Client geocodieren. Bei einem üblichen Beispiel erhalten Sie ein Dataset unabhängig von einer Nutzereingabe, beispielsweise, wenn Sie über einen festen, endgültigen und bekannten Satz von Adressen verfügen, die geocodiert werden müssen. Serverseitiges Geocoding kann auch nützlich als Sicherung sein, wenn das clientseitige Geocoding fehlschlägt.

Mögliche Bedenken betreffen eine unnötige Steigerung der Latenz für den Nutzer sowie Geocoding-Ergebnisse mit schlechterer Qualität als beim clientseitigen Geocoding, da weniger Informationen in der Anforderung verfügbar sind.

Für eine serverseitige Geocoding-Anwendung wird folgende Basisarchitektur zugrunde gelegt:

  • Eine serverbasierte Anwendung sendet eine Adresse an das Geocodierungsskript des Servers.
  • Das Skript überprüft den Cache, um zu ermitteln, ob die Adresse kürzlich geocodiert wurde.
  • Ist dies der Fall, gibt das Skript das Ergebnis an die ursprüngliche Anwendung zurück.
  • Ist dies nicht der Fall, sendet das Skript eine Geocoding-Anforderung an Google. Sobald ein Ergebnis vorhanden ist, wird es zwischengespeichert. Anschließend wird das Ergebnis an die ursprüngliche Anwendung zurückgegeben.

Zusammenfassung

Üblicherweise erfüllt eine Kombination aus clientseitigem Geocoding und Caching die meisten Ihrer Anforderungen. Falls kontingentbezogene Probleme auftreten, können Sie die Abrechnung aktivieren oder eine Premium Plan-Lizenz erwerben.

Feedback geben zu...

Google Maps Geocoding API
Google Maps Geocoding API