"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo evitar errores OVER_QUERY_LIMIT en la API de Google Maps v3?

¿Cómo evitar errores OVER_QUERY_LIMIT en la API de Google Maps v3?

Publicado el 2024-11-12
Navegar:716

How to Avoid OVER_QUERY_LIMIT Errors in Google Maps API v3?

Ralentizar las consultas para evitar OVER_QUERY_LIMIT en Google Maps API v3

Al usar Google Maps API v3, es importante estar al tanto de las límite de consultas y límites de velocidad. Exceder estos límites puede provocar el error OVER_QUERY_LIMIT. Para evitar esto, es esencial implementar retrasos entre consultas.

Implementar retrasos en JavaScript

Un enfoque para implementar retrasos en JavaScript es a través de la función setTimeout(). Aquí hay un ejemplo:

function codeAddress(vPostCode) {
    if (geocoder) {
        setTimeout(function() {
            geocoder.geocode({ 'address': "'"   vPostCode   "'"}, function(results, status) {
                // Code for handling the geocoding result
            });
        }, 2000);
    }
}

En este ejemplo, se introduce un retraso de 2 segundos usando setTimeout() antes de enviar cada solicitud de geocodificación. Ajuste el valor de retraso según sea necesario para cumplir con los límites de velocidad establecidos por la API de Google Maps.

Puerto de la versión 3 de Mike Williams

Mike Williams ha proporcionado un puerto de la versión 3 de su tutorial original que maneja eficazmente los retrasos y evita el error OVER_QUERY_LIMIT. Este puerto se puede encontrar aquí:

http://acleach.me.uk/gmaps/v3/plotaddresses.htm

Código relevante del puerto versión 3 de Mike Williams

El siguiente fragmento de código del port de la versión 3 de Mike Williams ilustra la implementación de retrasos:

  function getAddress(search, next) {
    geo.geocode({address:search}, function (results,status)
      { 
        // If that was successful
        if (status == google.maps.GeocoderStatus.OK) {
          // Lets assume that the first marker is the one we want
          var p = results[0].geometry.location;
          var lat=p.lat();
          var lng=p.lng();
          // Output the data
            var msg = 'address="'   search   '" lat='  lat  ' lng='  lng  '(delay=' delay 'ms)<br>';
            document.getElementById("messages").innerHTML  = msg;
          // Create a marker
          createMarker(search,lat,lng);
        }
        // ====== Decode the error status ======
        else {
          // === if we were sending the requests to fast, try this one again and increase the delay
          if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
            nextAddress--;
            delay  ;
          } else {
            var reason="Code " status;
            var msg = 'address="'   search   '" error='  reason  '(delay=' delay 'ms)<br>';
            document.getElementById("messages").innerHTML  = msg;
          }   
        }
        next();
      }
    );
  }

Este código implementa un mecanismo de retraso dinámico. Si se encuentra el error google.maps.GeocoderStatus.OVER_QUERY_LIMIT, el código ajusta el retraso entre solicitudes en consecuencia para evitar errores futuros.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3