Optimieren der Kontingentnutzung beim Geocoding

Bei der Geocodierung werden Adressen konvertiert ("1600 "Amphitheatre Parkway, Mountain View, CA") in geografische Koordinaten (37.423021, -122.083739), mit dem Sie Markierungen setzen oder die Karte positionieren. Die Google Maps Platform APIs bieten zwei Geocoding-Methoden:

  • Clientseitiges Geocoding, der im Browser ausgeführt wird, meist in auf die Aktion der Nutzenden. Die Maps JavaScript API bietet Klassen, die die Anfragen für Sie stellen. Dieser Ansatz wird im Maps JavaScript API Dokumentation.
  • Serverseitige HTTP-Geocodierung, mit der Ihr Server direkt Anfragen stellen kann, auf den Google-Servern für Geocodes. Die Geocoding API ist das Web der diese Funktion bereitstellt. In der Regel integrieren Sie mit anderem Code, der serverseitig ausgeführt wird. Serverseitiges Geocoding wird beschrieben in der Geocoding API Dokumentation.

Beispiele für clientseitiges und serverseitiges Geocoding

Hier sehen Sie ein Beispiel für clientseitiges Geocoding, bei dem ein Adresse, geocodiert sie, verschiebt die Kartenmitte an diesen Standort und fügt ein Kartenmarkierung an dieser Stelle:

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 Maps JavaScript API Dokumentation.

Hier sehen Sie ein Beispiel mit Python für eine serverseitige Geocoding-Anforderung an:

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 außerdem ein XML-Format als Alternative zur JSON Weitere Beispiele finden Sie in der Geocoding API Dokumentation und den Clientbibliotheken für Python und anderen Sprachen.

Überlegungen zu Kontingenten und Kosten

Geocoding-Kosten, -Kontingente und -Ratenbegrenzungen bilden die Grundlage für die in diesem Dokument.

Kosten

<ph type="x-smartling-placeholder"></ph> Für Geocoding-Anfragen werden keine Kontingent-pro-Tag-Limits (QPD) mehr verwendet. Stattdessen wird jede Geocoding-Anfrage, ob clientseitig über den Browser oder serverseitig über die Geocoding API-Webdienst, ist Sie werden zu einem Preis pro Preis in Rechnung gestellt. Berücksichtigen Sie bei der Verwaltung Ihrer Nutzungskosten Begrenzung Ihres Tageskontingents

Ratenlimits

Der Geocoding-Dienst ist auf 3.000 Abfragen pro Minute begrenzt. die als Summe der clientseitigen und serverseitigen Abfragen berechnet wird.

Wenn clientseitige Geocoding-Anfragen in regelmäßigen Intervallen ausgeführt werden, z. B. in einer mobilen App verwenden, geben Ihre Anfragen möglicherweise Fehler zurück, wenn alle Nutzer gleichzeitige Anfragen senden, z. B. alle zur selben Sekunde von jedem Minute). Ziehen Sie eine der folgenden Lösungen in Betracht, um dies zu vermeiden:

  • Führen Sie die Anforderungen in zufälligen Intervallen durch (Jitter). Anfragen sicherstellen über Ihren gesamten Nutzenden zufällig ausgewählt werden.
  • Verwenden Sie bei der Entwicklung für Android eine ingenaue sich wiederholender Wecker.
  • Wählen Sie bei der Entwicklung für Android einen geeigneten Speicherort aus. Strategie.

Caching

Weitere Informationen finden Sie unter <ph type="x-smartling-placeholder"></ph> Geocoding API-Richtlinien zum Caching

Wann sollte clientseitiges Geocoding verwendet werden?

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

  • Clientseitige Anfragen und Antworten bieten eine schnellere, ein interaktives Erlebnis zu bieten.
  • Eine clientseitige Anforderung kann Informationen enthalten, die die Geocodierung verbessern. Qualität: Sprache des Nutzers, Region und Darstellungsbereich.

Besonders die clientseitige Geocodierung eignet sich am besten für die Geocodierung von Adressen. basierend auf dem Input der Nutzenden.

Es gibt zwei Basisarchitekturen für clientseitiges Geocoding:

  • Sie führen den Geocoding-Vorgang und die Darstellung vollständig im Browser durch. Beispiel: auf Ihrer Seite eine Adresse eingibt. Diese wird von Ihrer Anwendung geocodiert. Dann Ihre Seite verwendet den Geocode, um eine Markierung auf der Karte zu erstellen. Oder Ihre App kann einige einfache Analysen mithilfe der Geocodierung durchführen. 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. Ihre Anwendung geocodiert ihn im Browser. Die App sendet die Daten dann an den Server. Die Der Server antwortet mit einigen Daten, z. B. mit POIs in der Nähe. Dieses können Sie eine Antwort auf der Grundlage Ihrer eigenen Daten anpassen.

Wann sollte serverseitiges Geocoding verwendet werden?

Serverseitiges Geocoding eignet sich am besten für Anwendungen, Adressen müssen ohne Eingabe eines Clients geocodiert werden. Ein gängiges Beispiel wenn Sie ein Dataset erhalten, das unabhängig von Nutzereingaben stammt, wenn Sie eine feste, begrenzte und bekannte Reihe von für die Geocodierungen erforderlich sind. Beim serverseitigen Geocoding sind auch nützlich als Back-up, falls die clientseitige Geocodierung fehlschlägt.

Einige mögliche Bedenken sind eine unnötige Erhöhung der Latenz für den Nutzer, und Geocoding-Ergebnisse von geringerer Qualität als die clientseitige Geocodierung, da weniger die entsprechenden Informationen in der Anfrage enthalten sind.