web-dev-qa-db-fra.com

Limites de géocodage de l'API Google Javascript

Quelles sont les limites du géocodage côté client avec l'API JavaScript Google Maps JavaScript v3?


Ma recherche:

  1. L'API PHP de Google Maps est limitée à 2 500 requêtes de géocodage par jour (/ https://developers.google.com/maps/documentation/geocoding/#Limits ).
  2. L'API j3 de Google Maps a une limite de 25 000 chargements de carte par jour ( - https://developers.google.com/maps/documentation/javascript/usage ).
  3. Google suggère d'utiliser l'API javascript pour le géoocodage afin d'éviter la limite de 2500 à l'aide de l'API PHP. Il indique "en cours d'exécution du géocodage côté client, vous n'avez généralement pas à vous soucier de votre quota" ( https://developers.google.com/maps/articles/geocodestrat#client )

Toutefois, la documentation n'indique nulle part les limites de géocodage via l'API JavaScript de Google Maps v.3.

(Cela me dérange depuis un moment, et je l'ai recherché plus d'une fois et je n'ai pas trouvé de réponse solide)}

30
cantaffordretail

Je travaille dans l'assistance Google Maps pour les entreprises. Ce qui suit est mon opinion personnelle, pas celle de Google, mais disons que je connais assez bien ce sujet!

Premièrement, il est important de faire la distinction entre géocodage côté client (appels JavaScript à google.maps.Geocoder) et géocodage côté serveur (requêtes HTTP à/maps/api/géocodage). Cette question et cette réponse concernent spécifiquement le géocodage côté client; pour les limites côté serveur, voir ici . En particulier, la limite souvent mentionnée de 2 500 requêtes par IP et par jour s'applique uniquement au géocodage côté serveur, pas au côté client.

La réponse courte est donc: il n'y a pas de limite de requête documentée spécifiquement pour le géocodage côté client. Une fois qu'un client a chargé la bibliothèque d'API JavaScript de Google Maps, il peut émettre autant de requêtes de géocodage qu'il le souhaite, à condition qu'il le soit à une vitesse raisonnable. Deux règles empiriques pour éviter les problèmes:

  1. Initiez le géocodage en réponse à l’interaction de l’utilisateur, et tout ira bien même si les rafales de demandes sont courtes (par exemple, cliquez sur un bouton pour géocoder plusieurs adresses).
  2. Attrapez toutes les erreurs OVER_QUERY_LIMIT et gérez-les avec élégance (par exemple, suppression exponentielle). Ici est un exemple de code en Python.

Mais s'il vous plaît, n'essayez pas de contourner le géocodeur ni de le marteler pendant des heures, il existe des protections contre les abus.

METTRE À JOUR

À compter de 2017, le quota côté client est calculé par rapport au quota de service Web correspondant. Regardez la réponse de Christophe Roussy.

71
jpatokal

Toujours lire la dernière version que vous pouvez trouver sur un site officiel de Google pour connaître la version de l'API appropriée, une réponse datée du dépassement de pile n'est pas une référence à jour !!!

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

Voici ce qu'il a dit quand j'ai écrit cette réponse:

API Google Maps de géocodage - Limites d'utilisation

2 500 demandes gratuites par jour, calculées en tant que somme de côté client et requêtes côté serveur.

50 demandes par seconde, calculées en tant que somme de côté client et requêtes côté serveur.

Activez la facturation à l'utilisation pour débloquer des quotas plus élevés:

0,50 USD/1000 demandes supplémentaires, jusqu'à 100 000 par jour.

En général, je pense que Google est satisfait tant que les requêtes proviennent d'utilisateurs réels, car cela leur est utile.

Il existe également des moyens de sauvegarder quelques requêtes en mettant en cache les résultats pendant 30 jours: https://developers.google.com/maps/premium/optimize-web-services#optimize

8

Basé sur https://developers.google.com/maps/articles/geocodestrat ,

Le géocodage côté client via le navigateur est limité par carte session, le géocodage est donc réparti entre tous vos utilisateurs et échelles avec votre base d'utilisateurs. 

Alors, quelles sont les limites de taux par session de carte?

Les limites de géocodage étant définies par session utilisateur, il n’ya aucun risque que votre L’application atteindra une limite globale à mesure que votre base d’utilisateur grandira . Le géocodage côté client ne sera pas soumis à une limite de quota sauf si vous effectuez une opération lot de demandes de géocodage dans une session utilisateur. Par conséquent, en cours d'exécution géocodage côté client, vous n'avez généralement pas à vous soucier de votre quota.

Ok, quelle est la limite? Et c'est parti 

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

Avec une limite de débit ou 10 QPS (requêtes par seconde), lors de l'envoi du 11ème demander votre application devrait vérifier l'horodatage de la première demander et attendre jusqu'à ce qu'une seconde se soit écoulée. La même chose devrait être appliquée aux limites quotidiennes.

Toujours pas clair? moi aussi.

C’est la réponse secrète que j’ai trouvée dans leur document et qui dit "limite de débit de 10 demandes par seconde"

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

Je ne pense pas qu'une session utilisateur puisse envoyer 10 requêtes par seconde, je la considère donc comme illimitée.

2
allenhwkim

J'ai récemment posé cette question à propos de la bibliothèque Places (ou plutôt, je l'ai recherchée et j'en suis arrivée à une conclusion): 

Concernant les limites de quota de l'API de la bibliothèque de lieux pour Google Maps

Fondamentalement, il semble que les chargements de carte avec clé soient limités à 25 000 par jour et par domaine (cela peut ne pas être correct, mais je suis à peu près sûr que c'est le cas).

Les limites de géocodage sont limitées de la manière suivante:

2 500 si vous utilisez une clé API sans configurer la facturation 100 000 si vous utilisez une clé API et avez configuré la facturation

Si vous effectuez un géocodage côté serveur (résultats de mise en cache préalable ou similaire), votre géocodage s'effectue par domaine et vous allez bientôt manquer de requêtes. (c’est-à-dire comme si vous exécutiez des requêtes de lieux à l’aide de l’API REST, comme suit: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=XXXX)

Si vous utilisez la bibliothèque javascript, utilisez la fonctionnalité autocomplete ou PlacesService comme suit: 

service = new google.maps.Geocoder();

la limite (2 500 ou 100 000 respectivement) est donc par utilisateur final, de sorte que votre limite est adaptée à votre base d'utilisateurs.

0
Stephen Wright