2012-01-10 159 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