Maison > interface Web > js tutoriel > le corps du texte

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
314 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!

source:php.cn
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