2012-01-10 253 views

回答

6

編輯:如果您使用的Google Maps Geocoding Service,作爲@hamczu建議,那麼你應該得到的結果是這樣的:

{ 
... snip ... 
geometry: { 
    location: LatLng, 
    ... snip ... 
} 
} 

這聽起來像你不使用的API方法LatLng對象,而是試圖使用其未記錄的屬性。您的問題表明,這是一個糟糕的想法 - 谷歌代碼被壓縮和混淆,使用短的任意變量和屬性名稱的最佳原因之一,谷歌可隨時重新壓縮其代碼,隨意更改這些名稱。它是什麼不會更改是published API中的函數和屬性名稱 - 這是開始使用API​​的全部要點,以及開發人員應該針對API進行編碼的原因,而不是當前的「未記錄的功能」可用的代碼。

所以,最好的辦法是使用documented methods

var lat = result.geometry.location.lat(); 
var lng = result.geometry.location.lng(); 

否則,你的代碼可能會打破谷歌每次重新壓縮它的代碼的時間。

+0

他正在使用[Google Maps JavaScript API](http://code.google.com/apis/maps/documentation/javascript/geocoding.html),而不是帶有JSON輸出的Web Services。 – hamczu 2012-01-10 22:51:14

+0

啊,我明白了。這一點仍然成立,因爲他內省了LatLng對象而不是使用API​​方法。我會更新。 – nrabinowitz 2012-01-10 22:54:06

+0

也許他將這個JSON類對象傳遞給一些帶有JSON的API。我在其中一個項目中做了類似的事情 - 我通過Google Maps JS API收到了此對象,然後將此對象以JSON格式傳遞給我的服務器。在那裏,我用這個bizzare屬性名稱手動獲取lat和lng。 – hamczu 2012-01-10 23:48:45