ホームページ >ウェブフロントエンド >jsチュートリアル >Google Maps API v3 の OVER_QUERY_LIMIT エラーを防ぐ方法は?

Google Maps API v3 の OVER_QUERY_LIMIT エラーを防ぐ方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 22:50:02375ブラウズ

How to Prevent the Google Maps API OVER_QUERY_LIMIT Error in v3?

Google Maps API v3 での OVER_QUERY_LIMIT エラーの処理方法

はじめに:

Google Maps API v3 では、次のことができます。短期間に多すぎるジオコーディング リクエストを行うと、OVER_QUERY_LIMIT エラーが発生します。このエラーを回避するには、リクエスト間に遅延メカニズムを実装する必要があります。

JavaScript 実装:

ジオコーディング呼び出し間に一時停止を導入するには、次の JavaScript を使用できます。コード:

<code class="javascript">function codeAddress(vPostCode) {
  if (geocoder) {
    // If there's an existing delay, wait for it to finish
    while (wait) {
      /* Just wait. */
    }

    geocoder.geocode({ 'address': "'" + vPostCode + "'"}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
        wait = true;
        setTimeout(function() {
          wait = false;
        }, 2000); // Set a delay of 2000 milliseconds
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
}</code>

このコードは、既存の遅延を確認し、OVER_QUERY_LIMIT エラーが発生した場合は新しい遅延を設定し、遅延が終了するまで待ってジオコーディングを再開します。

例:

提供されたコードで、既存の codeAddress 関数を更新されたバージョンに置き換えることができます。

<code class="javascript">function codeAddress(vPostCode) {
  if (geocoder) {
    while (wait) { /* Just wait. */ };

    geocoder.geocode( { 'address': "'" + vPostCode + "'"}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map, 
            position: results[0].geometry.location
        });
      } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { 
        wait = true;
        setTimeout(function() {
          wait = false;
        }, 2000);
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
}</code>

この変更により、OVER_QUERY_LIMIT エラーを防ぐために必要な遅延が導入されます。

以上がGoogle Maps API v3 の OVER_QUERY_LIMIT エラーを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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