Maison > interface Web > js tutoriel > Comment éviter l'erreur OVER_QUERY_LIMIT de l'API Google Maps dans la v3 ?

Comment éviter l'erreur OVER_QUERY_LIMIT de l'API Google Maps dans la v3 ?

Patricia Arquette
Libérer: 2024-11-02 22:50:02
original
399 Les gens l'ont consulté

How to Prevent the Google Maps API OVER_QUERY_LIMIT Error in v3?

Comment gérer l'erreur OVER_QUERY_LIMIT dans l'API Google Maps v3

Introduction :

Dans l'API Google Maps v3, vous pouvez rencontrez l'erreur OVER_QUERY_LIMIT lorsque vous effectuez trop de demandes de géocodage sur une courte période. Pour éviter cette erreur, il est nécessaire d'implémenter un mécanisme de délai entre les requêtes.

Implémentation JavaScript :

Pour introduire une pause entre les appels de géocodage, vous pouvez utiliser le JavaScript suivant code :

<code class="javascript">function codeAddress(vPostCode) {
  if (geocoder) {
    // If there's an existing delay, wait for it to finish
    while (wait) {
      /* Just wait. */
    }

    geocoder.geocode({ 'address': "'" + vPostCode + "'"}, 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
        });
      } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
        wait = true;
        setTimeout(function() {
          wait = false;
        }, 2000); // Set a delay of 2000 milliseconds
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
}</code>
Copier après la connexion

Ce code vérifie les délais existants, définit un nouveau délai si l'erreur OVER_QUERY_LIMIT se produit et attend la fin du délai avant de reprendre le géocodage.

Exemple :

Dans le code fourni, vous pouvez remplacer la fonction codeAddress existante par la version mise à jour :

<code class="javascript">function codeAddress(vPostCode) {
  if (geocoder) {
    while (wait) { /* Just wait. */ };

    geocoder.geocode( { 'address': "'" + vPostCode + "'"}, 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
        });
      } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { 
        wait = true;
        setTimeout(function() {
          wait = false;
        }, 2000);
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
}</code>
Copier après la connexion

Cette modification introduira les délais nécessaires pour éviter l'erreur OVER_QUERY_LIMIT.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal