Heim  >  Artikel  >  Web-Frontend  >  Wie vermeide ich OVER_QUERY_LIMIT-Fehler in Google Maps API v3?

Wie vermeide ich OVER_QUERY_LIMIT-Fehler in Google Maps API v3?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 10:42:30882Durchsuche

How to Avoid OVER_QUERY_LIMIT Errors in Google Maps API v3?

Abfragen verlangsamen, um OVER_QUERY_LIMIT in Google Maps API v3 zu vermeiden

Bei der Verwendung von Google Maps API v3 ist es wichtig, sich des Tagesablaufs bewusst zu sein Abfragelimit und Ratenlimits. Das Überschreiten dieser Grenzwerte kann zum Fehler OVER_QUERY_LIMIT führen. Um dies zu vermeiden, ist es wichtig, Verzögerungen zwischen Abfragen zu implementieren.

Verzögerungen in JavaScript implementieren

Ein Ansatz zur Implementierung von Verzögerungen in JavaScript ist die Funktion setTimeout(). Hier ist ein Beispiel:

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

In diesem Beispiel wird mit setTimeout() eine Verzögerung von 2 Sekunden eingeführt, bevor jede Geokodierungsanforderung gesendet wird. Passen Sie den Verzögerungswert nach Bedarf an, um die von der Google Maps-API festgelegten Ratengrenzen einzuhalten.

Version 3-Port von Mike Williams

Mike Williams hat einen Version 3-Port von bereitgestellt sein ursprüngliches Tutorial, das effektiv mit Verzögerungen umgeht und den Fehler OVER_QUERY_LIMIT vermeidet. Diese Portierung finden Sie hier:

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

Relevanter Code aus Mike Williams' Version 3-Port

Der folgende Codeausschnitt aus Mike Williams' Version 3-Port veranschaulicht dies Implementierung von Verzögerungen:

<code class="javascript">  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();
      }
    );
  }</code>

Dieser Code implementiert einen dynamischen Verzögerungsmechanismus. Wenn der Fehler google.maps.GeocoderStatus.OVER_QUERY_LIMIT auftritt, passt der Code die Verzögerung zwischen Anfragen entsprechend an, um zukünftige Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie vermeide ich OVER_QUERY_LIMIT-Fehler in Google Maps API v3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn