住所のジオコーディングに関するベスト プラクティス

ジオコーディングは、住所(番地など)を地理座標(緯度と経度)に変換する処理です。地理座標を使用して、地図上にマーカーを配置したり、地図上に配置したりできます。このドキュメントでは、住所をジオコーディングする際の考慮事項を明確に説明します。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 を 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 つの主な考慮事項があります。

  1. 通常、ユーザー入力では住所を段階的に入力する必要があります(「123 Main Street」など)。不完全であいまいな住所をジオコーディングできると、ユーザーが早く結果を得られるため便利です。
  2. ユーザー入力に応答するアプリケーションはレイテンシの影響を受けやすくなります。

これら 2 つの点を考慮すると、 Places API の Place Autocomplete サービスが、ユーザー入力に応答するユースケースに最適です。Place Autocomplete は、複数の候補を返してユーザーが選択できるようにするように設計されています。Places API の検索対象をジオコードまたは住所のみに限定し、お店やサービスを除外できます。さらに、オートコンプリート ルックアップ関数で、特定の場所に固有の結果を返すようにバイアスをかけることができます。Places API は、プレイス ID を返します。この ID は、明確に区別される場所として Geocoding API ウェブサービスに渡されます。このサービスはその後、住所の詳細全体を返し、住所を latlng にジオコーディングします。プレイス ID は、Directions API や Distance Matrix API(以下を参照)などの他の API にも渡すことができます。

Geocoding API の住所のジオコーディングは、レイテンシが大幅に長くなります。また、不完全なクエリやあいまいなクエリに対する結果の精度も低下するため、ユーザー入力にリアルタイムで応答する必要があるアプリケーションにはおすすめしません。

Place Autocomplete サービス(AndroidiOSJavaScript Places API)の詳細をご覧ください。

自動システム

完全であいまいな住所の自動処理: 完全な住所文字列(例: 「48 Pirrama Rd, Pyrmont, NSW, Australia」)などの曖昧さのないクエリについては、Geocoding API ウェブサービスで処理することをおすすめします。住所のジオコーディング バックエンドは、世界中のより広範な住所に対応しており、このような完全で明確なクエリを使用して高品質な結果を得るように最適化されています。

あいまいなクエリの自動処理: あいまいなクエリとは、不適切な形式の住所、不完全な住所、スペルミスなどを含むクエリのことです。自動システムでは、 Geocoding API ウェブサービスを使用することをおすすめします。ただし、Geocoding API は、あいまいなクエリを処理するようには設計されておらず、あいまいなクエリに対しては、結果の精度が低くなったり、結果がゼロになったりすることがあります。ユーザー入力から派生したあいまいなクエリを自動処理システムが大量に処理する場合は、 Places API の Place Autocomplete サービスを使用して、アプリにインタラクティブな要素を追加することをおすすめします。これは、複数の候補を返してユーザーが選択できるように設計されているためです。Places API は、プレイス ID を返します。この ID は、明確に区別される場所として Geocoding API ウェブサービスに渡され、完全な住所の詳細を返して、住所を latlng にジオコーディングします。Place Autocomplete サービス(AndroidiOSJavaScript Places API)の詳細をご覧ください。

Directions API と Distance Matrix API のレイテンシを短縮する

出発地、目的地、地点を住所の文字列として指定すると、Directions API Distance Matrix API は、Geocoding API と同じバックエンドを使用して、ルートを計算する前にこれらの住所をジオコーディングします。このため、latlngs またはプレイス ID と同じ場所を指定する場合と比べて、レイテンシが大幅に増加します。

ユーザー入力に応答するなど、レイテンシの影響を受けやすい状況で Directions API や Distance Matrix API を使用するアプリケーションで、出発地、目的地、地点が最初に住所文字列として指定される場合は、Places API の Place Autocomplete サービスを使用して住所文字列をプレイス ID に変換し、そのプレイス ID を Directions API または Distance Matrix API に渡すことにより、レイテンシを最小限に抑えることをおすすめします。Place Autocomplete サービス(AndroidiOSJavaScript Places API)の詳細をご覧ください。 Place Autocomplete とルートの JavaScript の例もご覧ください。

まとめ

ユースケースに応じて、住所のジオコーディング時、Geocoding API を使用するか、Place Autocomplete サービスを Geocoding API と組み合わせて使用することで、正確なジオコーディング結果を提供するアプリケーションを作成して、レイテンシを短縮できます。

エラーの対処と再試行

UNKNOWN_ERROR レスポンスを受け取った場合は、一時的なエラーが原因です。少し待ってから再試行すると、適切に対処できます。再試行ロジックが含まれ、Google Maps Platform プレミアム プラン認証をサポートする Google Maps Platform ウェブサービス クライアント ライブラリを使用することをおすすめします。Google マップ サービス向けの Java ClientPython ClientGo ClientNode.js Client は、コミュニティがサポートするクライアント ライブラリで、GitHub からダウンロードや投稿ができます。インストール手順とサンプルコードも紹介されています。

OVER_QUERY_LIMIT ステータス コードがレスポンスとして返された場合は、API の使用量上限を超過しています。こちらの 使用量の最適化方法をお試しになることをおすすめします。