Maps SDK for Android でプレイス サービスと Geocoding API を使用して、地域を検索したり、場所の詳しい情報を取得したりすることができます。プレイス サービスと Geocoding API は、プレイス ID を取得できる便利で安定性の高い代替ツールです。すでにプレイス ID を使用している場合、それらの ID を境界線用データドリブン スタイル設定に流用できます。
プレイス サービスとジオコーディングは次の方法で Maps SDK for Android のアプリに追加できます。
- Places SDK for Android。場所に関する情報を返すメソッドが含まれる Android のライブラリです。
- Places API。HTTP リクエストを使用して場所に関する情報を返します。
- Geocoder クラス。ユーザー入力から動的にジオコーディングとリバース ジオコーディングを実行できます。
- Geocoding API。既知の住所を静的にジオコーディングできます。
プレイス サービスを使用する
テキスト検索(新版)を使ってプレイス ID を取得する
Places API でテキスト検索(新版)の REST API を使用し、フィールド マスクに places.id
を指定することで、地域データを含むプレイス ID を取得できます。テキスト検索(新版)を使ってプレイス ID をリクエストしても、料金は発生しません。詳細
たとえば、次の API 呼び出しでカリフォルニア州トリニダード市のプレイス ID を取得できます。
curl -X POST -d '{ "textQuery" : "Trinidad, CA" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.id' \ 'https://places.googleapis.com/v1/places:searchText'
Places Autocomplete を使用して地域を検索する
Places SDK for Android の Place Autocomplete サービスを使用すると、ユーザーが地域を簡単に検索できるようになります。地域のみを返すように Places Autocomplete サービスを設定するには、AutocompleteSupportFragment.setTypesFilter(List)
でタイプのフィルタを PlaceTypes.REGIONS
に設定します。
地域内の場所の詳細を取得する
Places SDK for Android の Place Details サービスで返される地域データは非常に便利です。たとえば、次のことができます。
- 地名に基づいて境界線のプレイス ID を検索する。
- 境界線にズームするビューポートを取得する。
- 境界線の対象物タイプ(
locality
など)を取得する。 - フォーマット済みの住所を取得する。米国であれば「地名、州、国」に変換されます(例:「オタムワ、アイオワ、米国」)。
- 写真など、その他の便利なデータを取得する。
Geocoding API を使用する
Geocoding API を使用して、住所を緯度と経度の座標やプレイス ID に変換したり、緯度と経度の座標やプレイス ID を住所に変換したりできます。境界線用データドリブン スタイル設定と組み合わせて、次のような用途に使用できます。
- ジオコーディングを使用して地域のビューポートを取得する。
- ジオコーディングの呼び出しにコンポーネントのフィルタリングを適用して、行政区域 1~4、地域区分、または郵便番号のプレイス ID を取得する。
- リバース ジオコーディングを使用して緯度と経度の座標でプレイス ID を取得する、または特定の場所にあるすべてのコンポーネントのプレイス ID を返す。
次の例では、住所(エスケープ済み URL)を使用して Geocoding API に対するリクエストを行います。
https://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Pkwy%20Mountain%20View%20CA&key=YOUR_API_KEY
リバース ジオコーディングを使用してプレイス ID を見つけることができます。以下の例のジオコーディング サービスの関数は、指定された緯度と経度の座標にあるすべての住所コンポーネントのプレイス ID を返します。
https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&key=YOUR_API_KEY
リバース ジオコーディングにコンポーネント フィルタリングを組み合わせて、指定された場所の、以下の 1 つ以上のタイプの住所コンポーネントを取得します。
administrativeArea
country
locality
postalCode
次の例の関数では、ジオコーディング サービスでリバース ジオコーディングにコンポーネントの制限を追加して、指定された場所の locality
タイプの住所コンポーネントのみをすべて取得します。
https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&result_type=locality&key=YOUR_API_KEY