您可以搭配使用 Places 服務和 Geocoding API 與 Maps SDK for Android,搜尋區域並取得地點的詳細資訊。Places 服務和 Geocoding API 是功能強大且穩定的替代方案,可用於取得地點 ID。如果您已在使用地點 ID,就能透過界線資料導向樣式重複使用這些 ID。
如要將 Places 服務和 Geocoding 新增至 Maps SDK for Android 應用程式,請按照下列步驟操作:
- Places SDK for Android 是 Android 程式庫,其中包含用於傳回地點資訊的方法。
- Places API 會使用 HTTP 要求傳回地點資訊。
- 地理編碼器類別可根據使用者輸入內容,動態進行地理編碼及反向地理編碼。
- Geocoding API 可讓您對已知靜態地址進行地理編碼。
使用 Places 服務
使用 Text Search (新版) 尋找地點 ID
您可以使用 Places API 中的 Text Search (新版) REST API,在欄位遮罩中指定 places.id
,取得包含區域資料的地點 ID。如果僅使用 Text Search (新版) API 要求地點 ID,就不會產生任何費用。瞭解詳情。
舉例來說,如要取得加州千里達的地點 ID,您可以發出下列 API 呼叫:
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 服務可讓使用者輕鬆搜尋區域。如要將 Place Autocomplete 服務設為只傳回區域,請使用 AutocompleteSupportFragment.setTypesFilter(List)
將類型篩選器設為 PlaceTypes.REGIONS
。
取得區域的地點詳細資料
Places SDK for Android 中的 Place Details 服務會傳回區域資料,十分實用。例如,您可以:
- 根據地點名稱搜尋界線地點 ID。
- 取得可視區域以縮放至界線。
- 取得界線的地圖項目類型 (例如
locality
)。 - 取得格式化地址,在美國區域中,這個地址會解析為「地點名稱, 州, 國家」,例如「Ottumwa, IA, USA」。
- 取得相片等其他實用資料。
使用 Geocoding API
您可以使用 Geocoding API 將地址轉換為經緯度座標和地點 ID,或將經緯度座標或地點 ID 轉換為地址。以下應用實例適合搭配界線資料導向樣式:
- 透過地理編碼取得區域的可視區域。
- 針對地理編碼呼叫進行元件篩選,取得行政區 1 到 4、縣市或郵遞區號的地點 ID。
- 透過反向地理編碼,按經緯度座標尋找地點 ID,甚至是針對特定位置的所有元件傳回地點 ID。
以下範例使用地址 (已以網址逃逸) 向 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
搭配元件篩選使用反向地理編碼,即可取得指定位置上一或多種下列類型的地址元件:
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