web-dev-qa-db-fra.com

OVER_QUERY_LIMIT lors de l'utilisation de Google Maps

J'ai un problème lors de l'accès à Google Maps depuis mon application. Lorsque j'envoie plus de 10 demandes en boucle à partir d'un script Java, je reçois l'exception en tant que OVER_QUERY_LIMIT du service de géocodeur .. essayé de donner quelques retards en utilisant setInterval (), etc., mais ne fonctionne pas.

36
Sriharsha

Vous envoyez probablement trop de demandes par seconde et Google ne vous permet pas de le faire.

Lire http://code.google.com/apis/maps/faq.html#geocoder_classorhttp

11
Ilya Saunkin

Le géocodage dans l'API JavaScript est limité. Lorsque vous chargez l'API pour la première fois, vous pouvez envoyer 10 demandes de géocodage d'adresses ou 5 demandes de géocodage inversé (avant) avant d'obtenir une réponse OVER_QUERY_LIMIT. Lorsque vous le faites, utilisez " exponential backoff " pour retarder vos requêtes.

Vous pouvez également vous joindre à la discussion dans Numéro 4805 (gmaps-api-issues).

3
miguev

Si vous utilisez une saisie semi-automatique, essayez d'utiliser Google Places API de saisie semi-automatique . (Même si ce n'est pas exactement ce qu'il a demandé, je suppose que beaucoup arriveront ici de cette question)

1
thealexbaron
We can use ajax queue.
At a time 20 ajax request will get executed and other will wait in queue. 
Create multiple geocode key and keep in array and use it randomly for each ajax request. 

Here I have loaded 2200 markers. It takes around 1 min to add 2200 locations.
<https://jsfiddle.net/suchg/qm1pqunz/11/>
0
sachin gavas

Ayez une liste des API et utilisez-les au hasard pour chaque requête . Par exemple en python

comme clés = [clé1, clé1, clé3 ....]

location = Geocoder(random.choice(keys)).geocode(address) 

ou

location = Geocoder(random.choice(keys)).reverse_geocode(Lat,Long)

Basé sur votre condition

0
Yaswanth

Lisez d'abord cet article . https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits

Si vous envoyez plusieurs demandes en une seconde, utilisez la méthode de délai.

function sleep(milliSeconds) {
  var startTime = new Date().getTime();
  while (new Date().getTime() < startTime + milliSeconds);
}

appelez cette méthode dans votre structure de boucle . dormir (2200);

0
Ehsan ul haq