地理編碼常見問題

這個常見問題涵蓋了 Geocoding API 的相關問題。 請參閱 Google 地圖平台常見問題,瞭解所有 Google 地圖平台的常見問題。另請參閱地理編碼地址的最佳做法

疑難排解

疑難排解

我收到更多透過地理編碼器傳回 ZERO_RESULTS 的查詢。這是怎麼回事?

在地理編碼器中,不明確、不完整且格式有誤的查詢 (例如拼錯或不存在的地址) 容易產生 ZERO_RESULTS。如果找不到地址,則 ZERO_RESULTS 是部分結果,例如,只傳回郊區而非地址。

如果應用程式會處理使用者輸入的地址,Places API 中的 Place Autocomplete 功能可能會產生更優質的結果。「地點自動完成」功能可讓使用者根據自己輸入的內容,從一組結果中選擇,如此一來,使用者就可以選擇類似的名稱,並在地址輸入錯誤時調整查詢。

如果您的應用程式會處理不明確或不完整的查詢或可能含有錯誤的查詢,建議您使用 Places API 中的 Place Autocomplete 功能,而不要使用 Geocoding API 中提供的轉送地理編碼器。詳情請參閱地理編碼地址的最佳做法在 Google Maps API 中處理地址的相關網誌文章

我需要快速的回應,而我的應用器的地理編碼器執行速度太慢。我可以使用哪些方法更快回覆?

我們建議應用程式回應使用者輸入內容,因此容易受到延遲時間敏感,因此使用 Places API 的 Place Autocomplete 功能 (也提供 JavaScriptAndroidiOS) 來取代地址地理編碼。 「地點自動完成」功能經過最佳化,能夠以互動方式使用,因此延遲時間相當短。

Geocoding API 中的地址地理編碼功能已經過最佳化,以完整、明確且格式正確的地址 (例如輸入線上表單的送貨地址) 使用,因此延遲時間比 Place Autocomplete 更長。前進的地理編碼器涵蓋範圍更大,但結果品質也比較好,但延遲時間會稍長。

如何降低 Directions API 和 Distance Matrix API 的延遲時間?

請改用地點 ID 來指定地址、起點和目的地,而不要使用地址。地點 ID 的最佳方法是從 Places API 的 Place Autocomplete 功能或 Maps JavaScript API 的 Places 程式庫取得。另請參閱 placeIdOnly 選項的說明,瞭解如何降低 Place Autocomplete 的費用。

使用地址字串 (而非地點 ID 或 latlng) 查詢 Directions API 或 Distance Matrix API 時,它們會使用與 Geocoding API 相同的後端,將該地址轉換成地點 ID,然後再計算路線。「地點自動完成」比地址地理編碼更快。針對在高度延遲時間敏感 (例如回應使用者輸入) 的情況下使用 Directions API 或 Distance Matrix API 的應用程式,建議您使用 Place Autocomplete 功能取得與這些地址對應的地點 ID,然後將地點 ID 傳遞至 Directions API 或 Distance Matrix API。這個方法可以大幅縮短延遲時間。請參閱說明文件,瞭解如何搭配路線使用 Place Autocomplete 範例

如何回報地理編碼器中的錯誤?

如果對於前向地理編碼服務有任何錯誤報告功能要求,請使用我們的公開 Issue Tracker 告訴我們。

地理編碼器無法根據我的用途產生良好結果。我可以提供哪些協助?

請利用我們公開的問題追蹤工具告訴我們,並分享幾項具體查詢,以便我們調查是否有任何錯誤或系統性問題,進而改善搜尋結果品質。此外,也歡迎調整最佳做法指南,讓開發人員協助提升成效。

如何使用元件篩選,透過地理編碼器取得最佳結果?

在地理編碼器中,元件篩選只會強制執行 postal_codecountry 限制。以下範例說明如何根據元件結果,以最佳方式篩選元件。在要求範例網址中,請務必將「YOUR_API_KEY」替換成實際的 API 金鑰。

  • 如要將郵遞區號限制為特定國家/地區,請務必使用 ISO 3166-2 國家/地區代碼來指定國家/地區限制。 舉例來說,components=country:CH|postal_code:8000 會傳回「瑞士蘇黎世 8000」。
    https://maps.googleapis.com/maps/api/geocode/json?components=country:CH%7Cpostal_code:8000&key=YOUR_API_KEY
    
  • 如要將查詢範圍限制於特定國家/地區,請務必使用 ISO 3166-2 國家/地區代碼來指定國家/地區限制。我們無法保證國家/地區和其他縮寫的結果與國家/地區代碼不同。

    範例:

    • components=country:FRA|locality:gallus 的地理編碼會回傳德國德國福林市的 Gallus 子區域。這是因為系統不支援法國的 3 個字母國家/地區代碼 (FRA),因此允許任何國家/地區的結果,因為 Frankfurt 的篩選結果會比法國境內的任何網頁更適合。
      https://maps.googleapis.com/maps/api/geocode/json?components=country:FRA%7Clocality:gallus&key=YOUR_API_KEY
      
  • 另外,Geocoding API 不一定會針對模糊查詢傳回多項結果。「地點自動完成」功能能夠更妥善地回答這類查詢。

    範例:

    • components=country:US|locality:madrid 的地理編碼會傳回「Madrid, NM 87010, USA」。但美國以外的其他城市一律名為「Madrid」。
      https://maps.googleapis.com/maps/api/geocode/json?components=country:US%7Clocality:madrid&key=YOUR_API_KEY
      
    • 使用 input=madrid&components=country:us&types=(regions) 的 Place Autocomplete 功能,以及使用 locationradius 指定可視區域,藉此調整位置結果,藉此產生回應至美國多座名為「Madrid」的多個城市。
      https://maps.googleapis.com/maps/api/place/autocomplete/json?location=37.386052,-122.083851&radius=10000&input=madrid&components=country:us&types=(regions)&key=YOUR_API_KEY