ホームページ >ウェブフロントエンド >jsチュートリアル >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 サイトの他の関連記事を参照してください。