web-dev-qa-db-ja.com

Googleマップの使用中にOVER_QUERY_LIMIT

私のアプリケーションからGoogleマップにアクセスするときに問題があります。Javaスクリプトから10以上のリクエストをループで送信すると、ジオコーダーサービスからOVER_QUERY_LIMITとして例外が発生します。これを取り除き、setInterval()などを使用していくつかの時間遅延を与えようとしました。しかし、動作しません。

38
Sriharsha

おそらく、1秒間に送信するリクエストが多すぎるため、 Google ではできません。

読み取り http://code.google.com/apis/maps/faq.html#geocoder_classorhttp

12

JavaScript APIのジオコーディングにはレート制限があります。 APIを最初にロードするときに、OVER_QUERY_LIMIT応答を取得する前に、住所ジオコーディングのリクエストを10件、逆(latlng)ジオコーディングのリクエストを5件送信できます。その場合、「 exponential backoff 」を使用してクエリを遅延させます。

Issue 4805 (gmaps-api-issues)のディスカッションに参加することもできます。

3
miguev

オートコンプリートを使用している場合は、Google Places Autocomplete API を使用してみてください。 (これは彼が尋ねたとおりではありませんが、多くの人がこの質問からここに到着すると思います)

1
thealexbaron

Ajaxキューを使用できます。

20時にajaxリクエストが実行され、他のリクエストはキューで待機します。

複数のジオコードキーを作成し、配列に保持し、各Ajaxリクエストに対してランダムに使用します。

ここに2200個のマーカーをロードしました。 2200の場所を追加するのに約1分かかります。

<https://jsfiddle.net/suchg/qm1pqunz/11/>
0
sachin gavas

APIのリストを用意し、リクエストごとにランダムに使用します。 Pythonの例

like keys = [key1、key1、key3 ....]

location = Geocoder(random.choice(keys)).geocode(address) 

または

location = Geocoder(random.choice(keys)).reverse_geocode(Lat,Long)

要件に基づいて

0
Yaswanth

最初にこの記事を読んでください。 https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits

1秒間に多くのリクエストを送信する場合は、遅延方法を使用します。

function sleep(milliSeconds) {
  var startTime = new Date().getTime();
  while (new Date().getTime() < startTime + milliSeconds);
}

ループ構造でこのメソッドを呼び出します。 sleep(2200);

0
Ehsan ul haq