2017-05-05 92 views
0

我在使用componentRestrictions時遇到了Google Maps JavaScript API的地理編碼器類及其返回結果的問題。Google地圖JS API地理編碼器類的結果不正確

簡而言之,我試圖讓用戶輸入一個地址並在特定的地點找到該地址。

我將一個字符串作爲地址傳遞給地理編碼對象文字。

然後,我使用componentRestrictions中的locality屬性將搜索限制爲僅「紐約」城市。

所以我的代碼如下所示:

geocoder.geocode(
    {address: address, 
    componentRestrictions: { 
     locality: 'New York' 
    } 
    }, function(results, status) { 
    console.log(results); 
    } 
); 

當通過一個特定的地址,如'E 64th St & 5th Ave',它返回中央公園動物園的位置的正確的結果。

但是,如果我使用更隱晦的地址,如'East Village',則返回紐約市政廳所在位置的結果。

如果我刪除componentRestrictions屬性,並傳遞與'East Village'相同的地址,它將返回East Village的正確位置。

是什麼讓這個陌生人是我使用谷歌開發人員教導的course through Udacity中提供的代碼。他們的代碼可以在here on GitHub找到。

當我完全按照他們提供的代碼運行他們的代碼時,我遇到了與我自己的代碼相同的問題。

但在他們的課程視頻中,它正常工作。

看來有些API自創建本課程以來可能已經發生變化,所以有可能我錯誤地使用了componentRestrictions。

有沒有人遇到過這樣的問題,並找到了解決方案?

還是我錯誤地使用了代碼?

感謝您的幫助!

回答

1

谷歌已於2016年11月發佈了新版本的地理編碼器。新版本並未完全支持地址組件。

在此文件,說明該組件過濾在新版本中是如何工作的請看:

https://developers.google.com/maps/documentation/geocoding/faq#trbl_component_filtering

在新的地理編碼器,分量濾波只完全支持地址級的效果。部分支持國家代碼(例如,組件=國家/地區)和對地區和更高級別結果的郵政編碼限制。

+0

謝謝@ xomena,這絕對是問題。謝謝! –

相關問題