地理編碼是指將地址 (例如街道地址) 轉換成地理座標 (經緯度) 的程序,用來在地圖上放置標記或設定地圖位置。本文旨在釐清地理編碼地址時需要考量的事項。說明何時適合使用 Geocoding API,以及何時可以使用 Places API Place Autocomplete 服務。
一般來說,請在地理編碼完整地址時使用 Geocoding API (例如「48 Pirrama Rd, Pyrmont, NSW, Australia」)。在 算繪地址相同 (例如經緯度) 時,請使用 Places API Place Autocomplete 服務。
用途和 API 建議
用途和 API 建議 | |
---|---|
即時回應使用者輸入的內容 (包括使用者輸入不明確、不完整、格式有誤或拼字錯誤) | 使用 Places API Place Autocomplete 服務取得地點 ID,然後使用 Geocoding API 將地點 ID 地理編碼為經緯度。 |
自動化系統處理完整、不明確的郵政地址 (例如「48 Pirrama Rd, Pyrmont, NSW, Australia」) | 使用 Geocoding API 網路服務。 |
自動化系統處理模糊查詢 (例如不完整、格式有誤或拼字錯誤) | 建議自動化系統使用 Geocoding API 網路服務。不過,如果系統在使用者輸入內容中衍生自模糊不清、不完整或錯別字的自動化系統,或是新增互動式 Place Autocomplete 小工具,或許有助於使用者選取結果,避免拼錯地址。 |
使用 Directions API 或 Distance Matrix API 的延遲問題,且會將起點、目的地或路線控點指定為地址字串 | 使用 Places API 的地點自動完成服務取得地點 ID,然後將地點 ID 傳遞至 Directions API 或 Distance Matrix API,藉此減少地理編碼的延遲情況。 |
回應使用者輸入的內容
如果應用程式會即時回應使用者輸入的內容,便會影響 API 選擇的兩大要素:
- 使用者輸入內容通常會漸進地輸入地址 (例如「中正路 123 號」),因此,為地址進行地理編碼時無法對應地址有助於使用者快速找到所需結果。
- 應用程式會回應使用者輸入的內容,
這兩個考量點應讓 Places API 中的 Place Autocomplete 服務最適合用於回應使用者輸入的內容。「地點自動完成」功能旨在傳回多個可能的選項,並讓使用者自行選擇。Places API 可設為僅限搜尋地理編碼或地址,但不含商家。另外,也可以自訂自動完成查詢功能,傳回特定位置的結果。Places API 會傳回地點 ID,這個 ID 可做為完全區分的位置傳送給 Geocoding API 網路服務,接著系統會傳回完整的地址詳細資料,並將地址進行地理編碼。地點 ID 也可以傳遞至其他 API,例如 Directions API 和 Distance Matrix API (請見下文)。
Geocoding API 中的地理編碼地址的延遲時間較長,在查詢不完整或模稜兩可的查詢時也能產生更準確的結果,因此不建議應用程式針對使用者輸入內容即時回應。
進一步瞭解 Android、iOS、JavaScript 和 Places API 的 Place Autocomplete 服務。
自動化系統
自動化系統處理完整、不明確的郵政地址:最好使用 Geocoding API 網路服務來處理不明確的查詢,例如完整的郵寄地址字串 (例如「48 Pirrama Rd, Pyrmont, NSW, Australia」)。地址地理編碼後端可以提供範圍涵蓋全球地址的大範圍地址,經過最佳化的這類明確查詢就能獲得最優質的搜尋結果。
自動化系統處理不明確的查詢:模糊查詢是指地址格式有誤、地址不完整或拼字錯誤的查詢。如果是自動化系統,建議您使用 Geocoding API 網路服務。不過,Geocoding API 的設計無法應付模糊化的查詢,而且可能會因為不確定查詢的結果較不準確或產生任何結果。 如果自動化系統處理了使用者輸入的高明確模糊查詢,您可以利用 Places API 的 Place Autocomplete 服務,在應用程式中加入互動式元素,因為這有助於傳回多個可能的選項,並允許使用者自行選擇。Places API 會傳回地點 ID,這個 ID 可做為完全區分的位置傳送給 Geocoding API 網路服務,接著系統會傳回完整的地址詳細資料,並將地址進行地理編碼。進一步瞭解 Android、iOS、JavaScript 和 Places API 的 Place Autocomplete 服務。
減少 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。進一步瞭解 Android、iOS、JavaScript 和 Places API 的 Place Autocomplete 服務。另請參閱 地點自動完成和規劃路線的 JavaScript 範例。
結語
根據您的用途而定,使用地理編碼功能時,使用 Geocoding API 或 Place Autocomplete 服務搭配 Geocoding API,您就能建立應用程式來為使用者提供精確的地理編碼結果,並縮短延遲時間。
管理錯誤並重試
如果您收到 UNKNOWN_ERROR
回應,這些是因暫時性錯誤而造成,最好在短時間重試後嘗試處理。建議您使用 Google 地圖平台網路服務用戶端程式庫,這個程式庫包含重試邏輯,並支援 Google 地圖平台付費方案驗證。
Google 地圖服務適用的 Java 用戶端、Python 用戶端、Go 用戶端和 Node.js 用戶端是社群支援的用戶端程式庫,可在 GitHub 下載及貢獻,您也可以在這裡查看安裝操作說明和程式碼範例。
如果收到 OVER_QUERY_LIMIT
狀態碼做為回應,表示您超出 API 的用量限制。請嘗試這些使用最佳化策略。