web-dev-qa-db-ja.com

Google JavaScript APIジオコーディングの制限

Google Maps JavaScript API v3でのクライアント側のジオコーディングの制限は何ですか?


私の研究:

  1. GoogleマップPHP APIのジオコードリクエストは1日あたり2500に制限されています( https://developers.google.com/maps/documentation/geocoding/#Limits
  2. Google Maps JavaScript API v3には、1日あたり25000map loadの制限があります( https://developers.google.com/maps/documentation/javascript/usage
  3. PHP APIを介して2500の制限を回避するには、ジオコーディングにJavaScript APIを使用することをお勧めします。「クライアント側のジオコーディングを実行しているため、通常は割り当て量を気にする必要はありません」(- https://developers.google.com/maps/articles/geocodestrat#client

ただし、Google Maps JavaScript API v.3を介したジオコーディングの制限については、どのドキュメントにも記載されていません。

(これはしばらくの間私を悩ませてきました、そして私はそれを複数回調査し、確かな答えを見つけることができませんでした)

31

私はGoogleのMaps for Businessサポートで働いています。以下は私個人の意見であり、Googleの意見ではありませんが、このトピックにかなり精通しているとしましょう!

まず、 クライアント側のジオコーディング (JavaScriptがgoogle.maps.Geocoderを呼び出す)を区別することが重要ですおよび サーバー側のジオコーディング (/ maps/api/geocodeへのHTTPリクエスト)。この質問と回答は、特にクライアント側のジオコーディングに関するものです。サーバー側の制限については、 こちら を参照してください。特に、IPあたり1日あたりの2,500リクエストという制限は、クライアント側ではなくサーバー側のジオコーディングにのみ適用されます。

つまり、具体的には、クライアント側のジオコーディングに関するドキュメント化されたクエリ制限はありません。クライアントがGoogle Maps JavaScript APIライブラリをロードすると、適切な速度で実行されれば、クライアントは必要なだけジオコードリクエストを実行できます。問題が発生しないようにするための2つの経験則:

  1. ユーザーの操作に応じてジオコーディングを開始します。短いリクエストバーストがある場合でも問題ありません(たとえば、ボタンをクリックして複数の住所をジオコーディングします)。
  2. OVER_QUERY_LIMITエラーをキャッチし、適切に処理します(例:指数バックオフ)。 ここ はPythonのサンプルコードです。

しかし、ジオコーダーをビジーループにしたり、何時間もそれをハンマーで叩いたりしないでください。乱用からの保護があります。

[〜#〜]更新[〜#〜]

2017年現在、クライアント側の割り当ては、対応するWebサービスの割り当てに対して計算されています。クリストフ・ルーシーの答えを見てください。

71
jpatokal

常に最新の記事を読んで、Googleの公式ウェブサイトで見つけることができます適切なAPIバージョン、日付付きのスタックオーバーフローの回答は最新のリファレンスではありません!!!

https://developers.google.com/maps/documentation/geocoding/usage-limits

これが私がこの答えを書いたときに言ったことです:

Google Maps Geocoding APIの使用制限

1日あたり2,500の無料リクエスト。クライアント側とサーバー側のクエリのsumとして計算されます。

1秒あたり50リクエスト。クライアント側とサーバー側のクエリのsumとして計算されます。

従量課金制を有効にして、割り当て量を増やします。

$ 0.50 USD/1000追加リクエスト、毎日最大100,000。

一般的に私は、クエリが実際の人間のユーザーからのものである限り、Googleは満足していると思います。

結果を最大30日間キャッシュすることでいくつかのリクエストを保存する方法もあります: https://developers.google.com/maps/premium/optimize-web-services#optimize

9

https://developers.google.com/maps/articles/geocodestrat に基づいて、

ブラウザを介したクライアント側のジオコーディングはマップセッションごとにレート制限されるため、ジオコーディングはすべてのユーザーに分散され、ユーザーベースに合わせてスケーリングされます。

では、マップセッションごとのレート制限とは何ですか?

ジオコーディングの制限はユーザーセッションごとであるため、ユーザーベースが拡大してもアプリケーションがグローバル制限に達するリスクはありません。ユーザーセッション内でジオコーディングリクエストのバッチを実行しない限り、クライアント側のジオコーディングは割り当て制限に直面しません。したがって、クライアント側のジオコーディングを実行する場合、通常は割り当て量を気にする必要はありません。

さて、制限は何ですか?さあ行こう

https://developers.google.com/maps/documentation/business/articles/usage_limits

レート制限または10 QPS(クエリ/秒)では、11番目のリクエストを送信するときに、アプリケーションは最初のリクエストのタイムスタンプを確認し、1秒が経過するまで待機する必要があります。同じことが1日の制限に適用されます。

まだ分​​かりませんか?私も。

これは私が彼らの文書から見つけた最も近い答えであり、それは「毎秒10リクエストのレート制限」と述べています

https://developers.google.com/maps/documentation/business/webservices/quota

ユーザーセッションが1秒あたり10のリクエストを送信できるとは思わないので、無制限と見なします。

2
allenhwkim

Placesライブラリについて最近聞いた(または調査した結果、結論に達した)。

Google Maps API割り当て制限のプレイスライブラリについて

基本的に、キーを使用したマップの読み込みは、ドメインごとに1日あたり25,000に制限されているようです(これは正しくない可能性がありますが、そうだと思います)。

ジオコーディングの制限は、次のように制限されています。

課金を設定せずにAPIキーを使用している場合は2,500、APIキーを使用していて課金を設定している場合は100,000

サーバー側のジオコーディング(事前キャッシュの結果など)を実行している場合、ジオコーディングはドメインごとに行われ、リクエストがすぐに不足します。 (つまり、REST APIを使用してPlacesリクエストを実行している場合と同様に:https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=XXXX

JavaScriptライブラリを使用している場合は、オートコンプリート機能またはPlacesServiceを次のように使用します。

service = new google.maps.Geocoder();

その場合、制限(それぞれ2,500または100,000)はエンドユーザーごとなので、制限はユーザーベースに応じて変化します。

0
Stephen Wright