ジオコーディングとは、住所(番地など)を地理座標(緯度と経度)に変換する処理のことをいいます。地理座標を使用して、地図上にマーカーを配置したり、地図の位置決めを行ったりできます。このドキュメントでは、住所のジオコーディングに関連する考慮事項を明確にします。Geocoding API を使用するのが最適な場合と、Places API のプレイス オートコンプリート サービスを使用するのが有益な場合について説明します。
一般に、完全な住所(「48 Pirrama Rd, Pyrmont, NSW, Australia」など)をジオコーディングする場合は、Geocoding API を使用します。曖昧な(不完全な)住所をジオコーディングする場合や、レイテンシに敏感なアプリケーション(ユーザー入力への応答など)の場合は、Places API の Place Autocomplete サービスを使用します。
ユースケースと推奨 API
ユースケースと推奨 API | |
---|---|
ユーザー入力にリアルタイムで応答する(ユーザーが入力した住所があいまい、不完全、書式が不適切、綴りが間違っている場合など) | Places API Place Autocomplete サービスを使用してプレイス ID を取得し、Geocoding API を使用してプレイス ID を latlng にジオコーディングします。 |
完全で明確な郵便住所を処理する自動システム(例:「48 Pirrama Rd, Pyrmont, NSW, Australia」) | Geocoding API ウェブサービスを使用する。 |
あいまいなクエリを処理する自動システム(住所が不完全、書式が不適切、スペルミスなど) | 自動化されたシステムでは Geocoding API ウェブサービスを使用することをおすすめします。ただし、ユーザー入力から得られる曖昧なクエリ、不完全なクエリ、誤字脱字のクエリの割合が高い自動化システムでは、インタラクティブな Place Autocomplete ウィジェットを追加して、ユーザーが結果を選択できるようにし、住所の誤字脱字を回避することをおすすめします。 |
出発地、目的地、または経由地が住所文字列として指定されている場合に、Directions API または Distance Matrix API を使用するとレイテンシの問題が発生する | Places API の Place Autocomplete サービスを使用してプレイス ID を取得し、そのプレイス ID を Directions API または Distance Matrix API に渡すことで、ジオコーディングのレイテンシを短縮します。 |
ユーザー入力に応答する
ユーザー入力にリアルタイムで応答するアプリでは、API の選択に影響する 2 つの主要な考慮事項があります。
- 通常、ユーザー入力では住所を段階的に入力します(「123 Main Street」など)。そのため、不完全であいまいな住所をジオコーディングできると、ユーザーが結果をすばやく得られるため便利です。
- ユーザー入力に応答するアプリケーションはレイテンシの影響を受けやすくなります。
これらの 2 つの考慮事項から、 Places API の Place Autocomplete サービスは、ユーザー入力に応答するユースケースに最適です。場所の自動入力は、複数の候補を返してユーザーが選択できるように設計されています。Places API は、ビジネスを除外し、ジオコードまたは住所のみを検索するように制限できます。さらに、Autocomplete ルックアップ関数にバイアスをかけて、特定の地域に固有の結果を返すようにすることもできます。Places API はプレイス ID を返します。この ID は、完全な位置情報として Geocoding API ウェブサービスに渡すことができます。ウェブサービスは、住所の詳細を返して、住所を latlng にジオコーディングします。プレイス ID は、Directions API や Distance Matrix API などの他の API にも渡すことができます(下記を参照)。
Geocoding API の住所ジオコーディングはレイテンシが非常に高く、不完全なクエリやあいまいなクエリでは精度が低い結果が生成されるため、ユーザー入力にリアルタイムで応答する必要があるアプリにはおすすめしません。
Android、iOS、JavaScript、 Places API の Place Autocomplete サービスについて詳しくは、以下をご覧ください。
自動システム
完全で明確な郵便住所を処理する自動システム: 完全な郵便住所の文字列(「48 Pirrama Rd, Pyrmont, NSW, Australia」など)などの明確なクエリは、Geocoding API ウェブサービスで処理するのが最適です。住所ジオコーディング バックエンドは、世界中の住所の範囲を拡大し、完全で明確なクエリで高品質の結果が得られるように最適化されています。
あいまいなクエリを自動システムで処理する: 住所の形式が正しくない、住所が不完全である、スペルミスがあるなど、あいまいなクエリは自動システムで処理されます。自動化されたシステムには、 Geocoding API ウェブサービスを使用することをおすすめします。ただし、Geocoding API は曖昧なクエリに対応するように設計されていないため、曖昧なクエリに対して精度が低い結果やゼロの結果が返されることがあります。自動化されたシステムで、ユーザー入力から派生したあいまいなクエリを頻繁に処理する場合は、 Places API の Place Autocomplete サービスを使用して、アプリにインタラクティブな要素を追加することをおすすめします。このサービスは、複数の候補を返してユーザーが選択できるように設計されているためです。Places API はプレイス ID を返します。この ID は、完全に曖昧さを解消した位置情報として Geocoding API ウェブサービスに渡すことができます。Geocoding API ウェブサービスは、住所の詳細を返して、住所を latlng にジオコーディングします。Android、iOS、JavaScript、 Places API の Place Autocomplete サービスについて詳しくは、以下をご覧ください。
Directions API と Distance Matrix API のレイテンシを短縮する
出発地、目的地、または経由地が住所文字列として指定されている場合、Directions API と Distance Matrix API は、Geocoding API と同じバックエンドを使用して、ルートの計算前にこれらの住所をジオコーディングします。これにより、緯度経度やプレイス ID と同じ場所を指定する場合に比べてレイテンシが大幅に増加します。
レイテンシに敏感な状況(ユーザー入力への応答など)でアプリが Directions API または Distance Matrix API を使用し、出発地、目的地、または経由地が最初に住所文字列として指定されている場合は、Places API の Place Autocomplete サービスを使用して住所文字列をプレイス ID に変換し、プレイス ID を Directions API または Distance Matrix API に渡すことで、レイテンシを最小限に抑えることをおすすめします。Android、iOS、JavaScript、 Places API の Place Autocomplete サービスについて詳しくは、以下をご覧ください。 プレイス オートコンプリートとルートの JavaScript の例もご覧ください。
まとめ
ユースケースに応じて、住所をジオコーディングする際に Geocoding API を使用するか、Geocoding API と Place Autocomplete サービスを組み合わせて使用すると、ユーザーに正確なジオコーディング結果を提供し、レイテンシを短縮するアプリケーションを作成できます。
エラーと再試行を管理する
UNKNOWN_ERROR
レスポンスが返された場合は、一時的なエラーが原因です。しばらく待ってから再試行することをおすすめします。再試行ロジックが含まれ、Google Maps Platform プレミアム プランの認証をサポートする Google Maps Platform ウェブサービス
クライアント ライブラリを使用することをおすすめします。Google マップ サービス向けの Java クライアント、Python クライアント、Go クライアント、Node.js クライアントは、コミュニティがサポートするクライアント ライブラリです。GitHub からダウンロードして貢献できます。GitHub には、インストール手順とサンプルコードも用意されています。
レスポンスとして OVER_QUERY_LIMIT
ステータス コードが返された場合は、API の使用量上限を超えていることを意味します。次の
使用量の最適化戦略を試すことをおすすめします。