地理編碼地址最佳做法

地理編碼是指將地址 (例如街道地址) 轉換成地理座標 (經緯度) 的程序,方便您在地圖上放置標記或設定地圖位置。本文件的重點是釐清地理編碼地址時的注意事項。此外,也會說明 Geocoding API 的最佳使用時機,以及何時能使用 Places API Place Autocomplete 服務。

一般而言,針對完整地址進行地理編碼時 (例如「48 Pirrama Rd, Pyrmont, NSW, Australia」) 進行地理編碼時,請使用 Places API Place Autocomplete 服務。對模稜兩可的地址或容易受到延遲影響的應用程式 (例如回應使用者輸入內容) 進行地理編碼時,請使用 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 Place Autocomplete 服務取得地點 ID,然後將地點 ID 傳遞至 Directions API 或 Distance Matrix API,即可縮短地理編碼延遲時間。

回應使用者輸入

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

  1. 使用者輸入內容通常會循序漸進地輸入地址 (例如「中正路 123 號」),因此如果能針對不完整的地址進行地理編碼,這樣對使用者較快取得結果會更有助益。
  2. 應用程式會回應使用者輸入內容,因此十分容易受到延遲時間影響。

這兩個考量因素讓 Places API 的 Place Autocomplete 服務最適合用於回應使用者輸入內容的用途。Place Autocomplete 能傳回多個可能選項,並讓使用者自行選擇。在排除商家時,Places API 可以限制只搜尋地理編碼或地址。另外,您也可以自訂自動完成查詢功能,以傳回特定位置的特定結果。Places API 會傳回地點 ID,這個 ID 能以完全模糊的位置傳遞至 Geocoding API 網路服務,然後傳回完整的地址詳細資料,然後將地址地理編碼至經緯度。地點 ID 也可以傳送至其他 API,例如 Directions API 和 Distance Matrix API (詳見下文)。

Geocoding API 地址地理編碼的延遲時間較長,而且對於不完整或不明確的查詢,也會產生較不準確的結果,因此對於必須即時回應使用者輸入內容的應用程式,我們不建議這麼做。

進一步瞭解 AndroidiOSJavaScript Places API 適用的 Place Autocomplete 服務。

自動化系統

自動化系統處理完整、不明確的郵寄地址:如完整的郵寄地址字串 (例如「48 Pirrama Rd, Pyrmont, NSW, Australia」) 是不明確的查詢,建議交由 Geocoding API 網路服務處理。地址地理編碼後端的涵蓋範圍更廣,可涵蓋全球更多地址,而且已針對這類完整明確的查詢進行最佳化調整,以獲得高品質的結果。

自動化系統處理模稜兩可的查詢: 模糊查詢是指含有格式錯誤地址、地址不完整或拼字錯誤的查詢。針對自動化系統,建議使用 Geocoding API 網路服務。然而,Geocoding API 本身並不適合處理模稜兩可的查詢,因此如果查詢不明確,可能會產生較不準確的結果或零結果。如果您的自動化系統處理的十分模糊查詢因為使用者輸入內容產生而產生模糊不清查詢,您可以使用 Places API 中的 Place Autocomplete 服務,在應用程式中加入互動式元素,因為這個功能旨在傳回多個可能的選項,並讓使用者選擇這些選項。Places API 會傳回地點 ID,這個 ID 能以完全模糊的位置傳遞給 Geocoding API 網路服務,然後傳回完整的地址詳細資料,然後將地址地理編碼至經緯度。進一步瞭解 AndroidiOSJavaScript Places API 適用的 Place Autocomplete 服務。

縮短 Directions API 和 Distance Matrix API 的延遲時間

將起點、目的地或路線控點指定為地址字串後,Directions API Distance Matrix API 會使用同一個後端來計算這些地址的地理編碼,然後再計算路線。相較於指定經緯度或地點 ID 相同的位置,這會大幅增加延遲時間。

如果應用程式是在容易受到延遲的情況下使用 Directions API 或 Distance Matrix API,例如回應使用者輸入內容,而且系統一開始會將起點、目的地或路線控點指定為地址字串,建議您採用 Places API 的 Place Autocomplete 服務,將地址字串轉換為地點 ID,再將地點 ID 傳遞至 Directions API 或 Distance Matrix API。進一步瞭解 AndroidiOSJavaScript Places API 適用的 Place Autocomplete 服務。另請參閱 Place Autocomplete 和路線規劃的 JavaScript 範例

結語

視您的用途而定,使用 Geocoding API 進行地址地理編碼時,如果搭配使用 Place Autocomplete 服務或搭配 Geocoding API,您就能夠建立應用程式,為使用者提供精確的地理編碼結果,同時縮短延遲時間。

管理錯誤和重試

如果收到 UNKNOWN_ERROR 回應,表示這些回應是暫時性錯誤所造成,最適合在短暫延遲後重試。建議您使用 Google 地圖平台網路服務 用戶端程式庫,包括重試邏輯,以及支援 Google 地圖平台付費方案驗證。Google 地圖服務適用的 Java 用戶端Python 用戶端Go 用戶端Node.js 用戶端,都是社群支援的用戶端程式庫,可供您在 GitHub 上下載及捐款,您也可以在 GitHub 找到安裝操作說明和程式碼範例。

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