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

ジオコーディングとは、住所などの住所を地理座標(緯度と経度)に変換する処理のことをいいます。地理座標を使用して地図上にマーカーを配置したり、地図の位置決めを行ったりできます。このドキュメントでは、住所のジオコーディングに関する考慮事項を明確化します。ここでは、Geocoding API を使用するのに最適なケースと、Places API の Place Autocomplete サービスを使用するメリットについて説明します。

一般に、完全な住所(例: 「48 Pirrama Rd, Pyrmont, NSW, Australia」)をジオコーディングする場合は Geocoding API を使用します。あいまいな(不完全な)住所をジオコーディングする場合や、レイテンシの影響を受けやすいアプリケーションの場合は、Input API(オートコンプリート)を使用できます。

ユースケースと推奨 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 サービスについて詳しくは、AndroidiOSJavaScriptPlaces 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 サービスについて詳しくは、AndroidiOSJavaScriptPlaces API の各ページをご覧ください。

Directions API と Distance Matrix API のレイテンシの削減

出発地、目的地、地点を住所文字列として指定すると、Directions APIDistance Matrix API が Geocoding API と同じバックエンドを使って住所を計算します。これにより、latlng または place ID と同じロケーションを使用する場合と比較して、レイテンシが大幅に増加します。

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

おわりに

ユースケースによっては、住所をジオコーディングする場合、Geocoding API を使用する場合、または Place Autocomplete サービスを Geocoding API と併用する場合、ユーザーに正確なジオコーディング結果を提供し、レイテンシを短縮するアプリケーションを作成できます。

エラーの対処と再試行

UNKNOWN_ERROR レスポンスが返された場合、一時的なエラーが原因であるため、少し遅れて再試行することをおすすめします。再試行ロジックを含み、Google Maps Platform プレミアム プラン認証をサポートする、Google Maps Platform ウェブサービスのクライアント ライブラリを利用することをおすすめします。 Google マップ サービス向けの Java クライアントPython クライアントGo クライアントNode.js クライアントは、コミュニティがサポートするクライアント ライブラリです。GitHub では、これらのライブラリをダウンロードおよび利用できます。インストール手順とサンプルコードもご覧ください。

レスポンスとして OVER_QUERY_LIMIT ステータス コードを受け取った場合は、API の使用量上限を超えています使用量の最適化戦略を試すことをおすすめします。