webentwicklung-frage-antwort-db.com.de

Geokodierungsbeschränkungen für Google Javascript API

Was sind die Grenzen für die clientseitige Geokodierung mit Google Maps JavaScript API v3?


Meine Forschung:

  1. Google Maps PHP API hat ein Limit von 2500 Geocodierungsanforderungen pro Tag ( https://developers.google.com/maps/documentation/geocoding/#Limits )
  2. Für die Google Maps Javascript API v3 gilt ein Limit von 25.000 Kartenladevorgängen pro Tag ( https://developers.google.com/maps/documentation/javascript/usage )
  3. Google empfiehlt, die JavaScript-API für die Geokodierung zu verwenden, um die Beschränkung auf 2500 über die API PHP zu vermeiden. Darin heißt es: "Beim Ausführen der clientseitigen Geokodierung müssen Sie sich im Allgemeinen nicht um Ihr Kontingent kümmern." ( https://developers.google.com/maps/articles/geocodestrat#client )

Nirgendwo wird jedoch in der Dokumentation angegeben, welche Geokodierungsgrenzwerte über die Google Maps JavaScript API v.3 gelten.

(Das hat mich eine Weile gestört, und ich habe es mehr als einmal recherchiert und konnte keine solide Antwort finden)

30

Ich arbeite in Google Maps für Unternehmen. Das Folgende ist meine persönliche Meinung, nicht die von Google, aber sagen wir, ich bin mit diesem Thema ziemlich vertraut!

Zunächst ist es wichtig, zwischen clientseitiger Geocodierung (JavaScript-Aufrufe an google.maps.Geocoder) und serverseitiger Geocodierung (HTTP-Anforderungen an/maps/api) zu unterscheiden/Geocode). Bei dieser Frage und Antwort geht es speziell um clientseitige Geokodierung. für serverseitige Grenzwerte siehe hier . Insbesondere für die oft genannten 2.500 Anfragen pro IP pro Tag gilt nur für die serverseitige Geocodierung, nicht für die clientseitige.

Die kurze Antwort lautet: Es gibt kein dokumentiertes Abfragelimit speziell für die clientseitige Geocodierung. Nachdem ein Client die Google Maps JavaScript API-Bibliothek geladen hat, kann er beliebig viele Geocode-Anforderungen stellen, vorausgesetzt, diese werden mit einer vernünftigen Geschwindigkeit ausgeführt. Zwei Faustregeln, um sicherzustellen, dass Sie keine Probleme haben:

  1. Starten Sie die Geokodierung als Reaktion auf die Benutzerinteraktion, und Sie sind in Ordnung, auch wenn es kurze Anforderungsblöcke gibt (z. B. Klicken Sie auf eine Schaltfläche, um mehrere Adressen zu geokodieren).
  2. Fangen Sie alle OVER_QUERY_LIMIT-Fehler ab und behandeln Sie sie ordnungsgemäß (z. B. exponentielles Backoff). Hier ist ein Beispielcode in Python.

Versuchen Sie jedoch nicht, den Geocoder über Stunden zu schleifen oder zu hämmern, es gibt Schutz vor Missbrauch.

UPDATE

Ab 2017 wird die clientseitige Quote mit der entsprechenden Webservice-Quote berechnet. Bitte werfen Sie einen Blick auf Christophe Roussys Antwort.

71
jpatokal

Immer das Neueste lesen, das Sie auf einer offiziellen Google-Website für die richtige API-Version finden können; eine datierte Stackoverflow-Antwort ist keine aktuelle Referenz !!!

https://developers.google.com/maps/documentation/geocoding/usage-limits

Folgendes sagte es, als ich diese Antwort schrieb:

Nutzungsgrenzen der Google Maps-Geokodierungs-API

2.500 kostenlose Anfragen pro Tag, berechnet als sum von Client-Seite und serverseitige Abfragen.

50 Anforderungen pro Sekunde, berechnet als sum von Client-Seite und serverseitige Abfragen.

Aktivieren Sie die Abrechnung nach Bedarf, um höhere Quoten freizuschalten:

$ 0,50 USD/1000 zusätzliche Anfragen, täglich bis zu 100.000.

Im Allgemeinen denke ich, dass Google glücklich ist, solange die Anfragen von echten menschlichen Nutzern stammen, da dies für sie von Wert ist.

Es gibt auch Möglichkeiten, einige Anforderungen durch Zwischenspeichern der Ergebnisse für bis zu 30 Tage zu speichern: https://developers.google.com/maps/premium/optimize-web-services#optimize

8

Basierend auf https://developers.google.com/maps/articles/geocodestrat ,

Die clientseitige Geokodierung durch den Browser ist pro Karte begrenzt Sitzung, so dass die Geokodierung auf alle Benutzer verteilt wird und skaliert mit Ihrer userbase. 

Also, was sind Ratenlimits pro Kartensitzung?

Da die Geokodierungsgrenzwerte pro Benutzersitzung gelten, besteht kein Risiko, dass Ihre Die Anwendung wird ein globales Limit erreichen, wenn Ihre Userbase wächst . Bei der clientseitigen Geokodierung wird kein Kontingentlimit festgelegt, es sei denn, Sie führen eine .__ aus. Stapel von Geokodierungsanforderungen innerhalb einer Benutzersitzung. Daher läuft Bei der clientseitigen Geokodierung müssen Sie sich im Allgemeinen keine Sorgen um Ihr .__ machen. Quote.

Ok, was ist das Limit? Auf geht's 

https://developers.google.com/maps/documentation/business/articles/usage_limits

Mit einem Ratenlimit oder 10 QPS (Abfragen pro Sekunde) beim Senden des 11. Bitten Sie Ihren Antrag, den Zeitstempel des ersten .__ zu überprüfen. anfordern und warten, bis 1 Sekunde vergangen ist. Dasselbe sollte angewendet werden an tägliche Grenzen.

Immer noch nicht klar? ich auch.

Dies ist die Antwort, die ich in ihrem Dokument gefunden habe, und sagt "Rate Limit von 10 Anfragen pro Sekunde".

https://developers.google.com/maps/documentation/business/webservices/quota

Ich glaube nicht, dass eine Benutzersitzung 10 Anfragen pro Sekunde senden kann, daher halte ich sie für unbegrenzt.

2
allenhwkim

Ich habe dies kürzlich nach der Places-Bibliothek gefragt (oder eher recherchiert und zu einem Ergebnis gekommen): 

Informationen zu Places-Bibliothek für Google Maps-API-Kontingentlimits

Grundsätzlich scheint es, dass Map-Lasten mit Schlüssel auf 25.000 pro Tag pro Domain begrenzt sind (das ist möglicherweise nicht richtig, aber ich bin mir ziemlich sicher, dass dies der Fall ist).

Geokodierungsgrenzen sind auf folgende Weise begrenzt:

2.500, wenn Sie einen API-Schlüssel verwenden, ohne die Abrechnung zu erstellen 100.000, wenn Sie einen API-Schlüssel verwenden und die Abrechnung eingerichtet haben

Wenn Sie serverseitige Geokodierung durchführen (Ergebnisse vor dem Zwischenspeichern oder ähnliches), erfolgt die Geokodierung pro Domäne, und die Anforderungen gehen ziemlich schnell aus. (d. h. in ähnlicher Weise wie bei Platzierungsanfragen mit der API REST: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=XXXX)

Wenn Sie die Javascript-Bibliothek verwenden, verwenden Sie die Autocomplete-Funktion oder PlacesService wie folgt: 

service = new google.maps.Geocoder();

dann ist das Limit (2.500 bzw. 100.000) pro Endbenutzer, also skaliert Ihr Limit mit Ihrer Benutzerbasis.

0
Stephen Wright