ホームページ >ウェブフロントエンド >jsチュートリアル >Google Maps API v3 での OVER_QUERY_LIMIT エラーを回避するにはどうすればよいですか?

Google Maps API v3 での OVER_QUERY_LIMIT エラーを回避するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 10:42:30969ブラウズ

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 で遅延を実装する方法の 1 つは、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。