地理編碼是指將地址 (例如街道地址) 轉換成地理座標 (經緯度) 的程序,您可以透過這項程序在地圖上放置標記或定位。本文主要說明對地址進行地理編碼時的注意事項。說明何時最適合使用 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 的選擇:
- 使用者通常會逐步輸入地址 (例如「123 Main Street」),因此能夠對不完整或模稜兩可的地址進行地理編碼,有助於使用者更快取得結果。
- 回應使用者輸入內容的應用程式對延遲非常敏感。
基於這兩項考量, 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 的用量限制。建議您嘗試這些
用量最佳化策略。