ジオコーディングとは、住所(番地など)を地理座標(緯度と経度)に変換するプロセスです。この座標を使用して、地図上にマーカーを配置したり、特定の場所を指定したりできます。このドキュメントでは、住所をジオコーディングする際の考慮事項を明確にすることに重点を置いています。このガイドでは、Geocoding API を使用するのが最適な場合と、Places API の Place Autocomplete サービスを使用するのが有益な場合について説明します。
一般に、完全な住所(「48 Pirrama Rd, Pyrmont, NSW, Australia」など)をジオコーディングする場合は、Geocoding API を使用します。あいまいな(不完全な)住所をジオコーディングする場合や、ユーザー入力への応答など、レイテンシの影響を受けやすいアプリケーションでは、Places API の Place Autocomplete サービスを使用します。
ユースケースと推奨 API
| ユースケースと推奨 API | |
|---|---|
| ユーザー入力にリアルタイムで応答する (ユーザーが入力したあいまいな住所、不完全な住所、書式が不適切な住所、スペルが間違っている住所など) | Places API の Place Autocomplete サービスを使用してプレイス ID を取得し、Geocoding API を使用してプレイス ID を緯度 / 経度にジオコーディングします。 |
| 完全で明確な郵便番号を処理する自動システム(例: 「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 サービスは、ユーザー入力に応答するユースケースに最適です。Place Autocomplete は、複数の候補を返し、ユーザーがそれらの中から選択できるように設計されています。Places API は、ビジネスを除外して、ジオコードまたは住所のみを検索するように制限できます。また、オートコンプリート検索関数にバイアスをかけて、特定の場所に関連する結果を返すこともできます。Places API はプレイス ID を返します。この ID は、完全に曖昧さ回避された位置情報として Geocoding API ウェブサービスに渡すことができます。Geocoding API ウェブサービスは、完全な住所の詳細を返し、住所を緯度経度にジオコーディングします。プレイス 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 ウェブサービスに渡すことができます。このサービスは、完全な住所の詳細を返し、住所を緯度経度にジオコーディングします。Place Autocomplete サービスについて詳しくは、Android、iOS、JavaScript、 Places API をご覧ください。
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 サービスについて詳しくは、それぞれのドキュメントをご覧ください。 Place Autocomplete とルートの JavaScript の例もご覧ください。
まとめ
ユースケースに応じて、Geocoding API を単独で使用することも、Place Autocomplete サービスと組み合わせて使用することもできます。これにより、正確なジオコーディング結果とレイテンシの短縮を実現するアプリを構築できます。
エラーと再試行を管理する
UNKNOWN_ERROR レスポンスを受け取った場合は、一時的なエラーが原因であるため、少し遅れて再試行するのが最適です。Google Maps Platform ウェブサービスの
クライアント ライブラリを使用することをおすすめします。このライブラリには、再試行ロジックが含まれており、Google Maps Platform プレミアム プランの認証がサポートされています。Google マップ サービス向けの Java クライアント、Python クライアント、Go クライアント、Node.js クライアントは、コミュニティ サポートのクライアント ライブラリです。GitHub でダウンロードして、GitHub に貢献できます。GitHub には、インストール手順とサンプルコードも用意されています。
レスポンスとして OVER_QUERY_LIMIT ステータス コードが返された場合は、API の使用量上限を超えています。
使用状況の最適化戦略を試すことをおすすめします。