首頁 > web前端 > js教程 > 如何避免 Google Maps API v3 中出現 OVER_QUERY_LIMIT 錯誤?

如何避免 Google Maps API v3 中出現 OVER_QUERY_LIMIT 錯誤?

Susan Sarandon
發布: 2024-11-02 10:42:30
原創
1009 人瀏覽過

How to Avoid OVER_QUERY_LIMIT Errors in Google Maps API v3?

在Google Maps API v3 中減慢查詢以避免OVER_QUERY_LIMIT

使用Google Maps API v3 時,請務必注意日常操作限制和速率限制。超過這些限制可能會導致 OVER_QUERY_LIMIT 錯誤。為了避免這種情況,必須在查詢之間實現延遲。

在 JavaScript 中實現延遲

在 JavaScript 中實現延遲的一種方法是透過 setTimeout() 函數。以下是一個範例:

<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>
登入後複製

在此範例中,在發送每個地理編碼請求之前使用 setTimeout() 引入 2 秒的延遲。根據需要調整延遲值以符合 Google Maps API 設定的速率限制。

Mike Williams 的版本 3 埠

Mike Williams 提供了版本 3 埠他的原始教程有效地處理了延遲並避免了 OVER_QUERY_LIMIT 錯誤。這個移植可以在這裡找到:

http://acleach.me.uk/gmaps/v3/plotaddresses.htm
登入後複製

來自Mike Williams 版本3 移植的相關代碼

以下來自Mike Williams 版本3 移植的代碼片段說明了延遲的實作:

<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>
登入後複製

這段程式碼實現了動態延遲機制。如果遇到 google.maps.GeocoderStatus.OVER_QUERY_LIMIT 錯誤,程式碼會相應調整請求之間的延遲以避免將來發生錯誤。

以上是如何避免 Google Maps API v3 中出現 OVER_QUERY_LIMIT 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板