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!