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

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

一般に、完全な住所(「48 Pirrama Rd, Pyrmont, NSW, Australia」など)をジオコーディングする場合は、Geocoding API を使用します。曖昧な(不完全な)住所をジオコーディングする場合や、ユーザー入力への応答など、レイテンシの影響を受けやすいアプリケーションの場合は、Places API の Place Autocomplete サービスを使用します。

ユースケースと推奨 API

ユースケースと推奨 API
物理的な到着、高度な目的地選択、ラストマイル配送、ライドシェアの乗車 / 降車、建物の入り口、キャンパス ナビゲーション Geocoding API v4 の Search for destinations(SearchDestinations)メソッドを使用して、建物の入口、ルート設定可能なナビゲーション ポイント、建物の輪郭、近くのランドマークを取得します。ジオコーディング方法を選択するをご覧ください。
ユーザー入力にリアルタイムで応答する(ユーザーが入力したあいまいな住所、不完全な住所、不適切な形式の住所、スペルミスのある住所を含む) Places API の Place Autocomplete サービスを使用してプレイス ID を取得し、SearchDestinations(地域ごとの詳細情報)または GeocodePlace(基本的な座標)を呼び出します。
完全かつ明確な住所を処理する自動システム(例: 「48 Pirrama Rd, Pyrmont, NSW, Australia」) Geocoding API v4 ウェブサービス(地域密着型の詳細情報の場合は SearchDestinations、座標検索の場合は GeocodeAddress)を使用します。
あいまいなクエリを処理する自動システム(不完全な住所、不適切な形式の住所、スペルミスの住所など) 自動システムでは 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 は、完全に曖昧さが解消された場所として Geocoding API ウェブサービスに渡すことができるプレイス ID を返します。Geocoding API ウェブサービスは、完全な住所の詳細を返し、住所を緯度と経度にジオコーディングします。プレイス ID は、Directions API(従来版)や Distance Matrix API(従来版)などの他の API に渡すこともできます(レイテンシを短縮するをご覧ください)。

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

Place Autocomplete サービスについて詳しくは、Android、iOS、JavaScript、 Places API をご覧ください。

自動システム

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

曖昧なクエリを処理する自動システム: 曖昧なクエリとは、不適切な形式の住所、不完全な住所、スペルミスを含むクエリです。自動システムには、 Geocoding API ウェブサービスを使用することをおすすめします。ただし、Geocoding API は、曖昧なクエリに対応するようには設計されていないため、曖昧なクエリに対しては、精度の低い結果や、結果なしを返す可能性があります。自動システムがユーザー入力から派生した曖昧なクエリを高い割合で処理する場合は、 Places API の Place Autocomplete サービスを使用してアプリにインタラクティブ要素を追加すると、複数の候補を返してユーザーが選択できるように設計されているため、効果的です。Places API は、プレイス ID を返します。この ID は、完全に曖昧さが解消された場所として Geocoding API ウェブサービスに渡すことができます。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(レガシー)に渡すことで、レイテンシを最小限に抑えることをおすすめします。Place Autocomplete サービスについて詳しくは、Android、iOS、JavaScript、 Places API をご覧ください。 Place Autocomplete とルートの JavaScript の例もご覧ください。

まとめ

ユースケースに応じて、Geocoding API を単独で使用することも、Place Autocomplete サービスと組み合わせて使用することもできます。これにより、正確なジオコーディング結果を提供し、レイテンシを短縮するアプリを構築できます。

エラーと再試行を管理する

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

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