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 サイトの他の関連記事を参照してください。