地理編碼地址最佳做法

地理編碼是指將地址 (例如街道地址) 轉換成地理座標 (經緯度) 的程序,您可以透過這項程序在地圖上放置標記或定位。本文主要說明對地址進行地理編碼時的注意事項。說明何時最適合使用 Geocoding API,以及何時適合使用 Places API Place Autocomplete 服務。

一般來說,為完整地址 (例如「48 Pirrama Rd, Pyrmont, NSW, Australia」) 進行地理編碼時,請使用 Geocoding API。如要對模糊 (不完整) 地址進行地理編碼,或用於對延遲時間敏感的應用程式 (例如回應使用者輸入內容),請使用 Places API Place Autocomplete 服務。

應用實例和 API 建議

應用實例和 API 建議
即時回應使用者輸入內容 (包括使用者輸入的地址不明確、不完整、格式不正確或拼寫錯誤) 使用 Places API Place Autocomplete 服務取得地點 ID,然後使用 Geocoding API 將地點 ID 地理編碼為經緯度。
自動化系統處理完成、明確的郵寄地址 (例如「48 Pirrama Rd, Pyrmont, NSW, Australia」) 使用 Geocoding API Web 服務。
自動化系統處理含糊不清的查詢 (例如地址不完整、格式有誤或拼字錯誤) 建議自動化系統使用 Geocoding API 網路服務。不過,如果自動化系統從使用者輸入內容衍生出大量含糊不清、不完整或拼字錯誤的查詢,建議加入互動式 Place Autocomplete 小工具,讓使用者選取結果,避免地址拼字錯誤。
使用 Directions API (舊版) 或 Distance Matrix API (舊版) 時,如果將起點、目的地或路線控點指定為地址字串,會發生延遲問題 使用 Places API Place Autocomplete 服務取得地點 ID,然後將地點 ID 傳遞至 Directions API (舊版) 或 Distance Matrix API (舊版),即可縮短地理編碼延遲時間。

回應使用者輸入內容

即時回應使用者輸入內容的應用程式有兩項主要考量,會影響 API 的選擇:

  1. 使用者通常會逐步輸入地址 (例如「123 Main Street」),因此能夠對不完整或模稜兩可的地址進行地理編碼,有助於使用者更快取得結果。
  2. 回應使用者輸入內容的應用程式對延遲非常敏感。

基於這兩項考量, Places API 中的 Place Autocomplete 服務非常適合用於回應使用者輸入內容。Place Autocomplete 的設計目的是傳回多個可能的選項,並讓使用者從中選擇。Places API 可限制為僅搜尋地理編碼或地址,並排除商家。此外,自動完成查詢函式可以調整,只傳回特定地點的結果。Places API 會傳回地點 ID,您可以將這個 ID 做為完全明確的地點傳遞至 Geocoding API Web 服務,該服務隨後會傳回完整的地址詳細資料,並將地址地理編碼為 latlng。地點 ID 也可以傳遞至其他 API,例如 Directions API (舊版) 和 Distance Matrix API (舊版) (請參閱「縮短延遲時間」)。

Geocoding API 的地址地理編碼延遲時間較長,且如果查詢內容不完整或模糊不清,產生的結果也較不準確,因此不建議用於必須即時回應使用者輸入內容的應用程式。

進一步瞭解 Android、iOS、JavaScript 和 Places API 適用的 Place Autocomplete 服務。

自動化系統

自動化系統處理完整、明確的郵寄地址:對於明確的查詢 (例如完整的郵寄地址字串,如「48 Pirrama Rd, Pyrmont, NSW, Australia」),建議使用 Geocoding API 網路服務。地址地理編碼後端提供更廣泛的全球地址涵蓋範圍,並經過最佳化,可為這類完整、明確的查詢提供高品質結果。

自動化系統處理含糊不清的查詢: 含糊不清的查詢是指含有格式有誤的地址、不完整的地址或拼字錯誤。如果是自動化系統,建議使用 Geocoding API Web 服務。不過,Geocoding API 的設計目的並非處理模稜兩可的查詢,因此回應這類查詢時,可能會產生較不準確或沒有結果。如果自動化系統處理大量衍生自使用者輸入內容的模糊查詢,建議您使用 Places API 中的 Place Autocomplete 服務,在應用程式中加入互動元素,因為這項服務可傳回多個可能選項,讓使用者從中選擇。Places API 會傳回地點 ID,可做為完全消歧的位置傳遞至 Geocoding API Web 服務,後者會傳回完整地址詳細資料,並將地址地理編碼為經緯度。進一步瞭解 Android、iOS、JavaScript 和 Places API 的 Place Autocomplete 服務。

縮短 Directions API (舊版) 和 Distance Matrix API (舊版) 的延遲時間

如果起點、目的地或中途點指定為地址字串,Directions API (舊版) 和 Distance Matrix API (舊版) 會使用與 Geocoding API 相同的後端,先對這些地址進行地理編碼,再計算路線。與將相同地點指定為 latlng 或地點 ID 相比,這會大幅增加延遲時間。

如果您的應用程式在對延遲時間非常敏感的情況下 (例如回應使用者輸入內容) 使用 Directions API (舊版) 或 Distance Matrix API (舊版),且來源、目的地或中途點最初指定為地址字串,建議您使用 Places API 的 Place Autocomplete 服務將地址字串轉換為地點 ID,然後將地點 ID 傳遞至 Directions API (舊版) 或 Distance Matrix API (舊版),以盡量縮短延遲時間。進一步瞭解 Android、iOS、JavaScript 適用的 Place Autocomplete 服務,以及 Places API。另請參閱 Place Autocomplete 和路線規劃的 JavaScript 範例。

結論

視應用情況而定,您可以單獨使用 Geocoding API,也可以搭配 Place Autocomplete 服務。這項功能可讓您建構應用程式,提供準確的地理編碼結果,並縮短延遲時間。

管理錯誤和重試

如果收到 UNKNOWN_ERROR 回應,表示發生暫時性錯誤,建議稍候片刻再重試。建議使用 Google 地圖平台網路服務 用戶端程式庫,其中包含重試邏輯,並支援 Google 地圖平台付費方案驗證。Google 地圖服務適用的 Java 用戶端、Python 用戶端、Go 用戶端和 Node.js 用戶端都是社群支援的用戶端程式庫,可在 GitHub 上下載及貢獻程式碼,並查看安裝說明和程式碼範例。

如果收到 OVER_QUERY_LIMIT 狀態碼回應,表示您已超過 API 的用量限制。建議您嘗試這些 用量最佳化策略。