2012-07-25 89 views
1

我正在尝试使用Google地理编码器进行反向地理编码查找。我在8个值上运行完全相同的命令,并且我只在它们中的两个上出现错误,这让我感到困惑,因为其中一个失败的值与其中一个工作值相同。 (“工作”值并不真正起作用 - 它们仍然返回来自'formatted_address'字段的未定义值,但它们不会引发错误)。我正在运行的命令如下:Google Geocoder返回null从反向查找

geocoder.geocode({latLng: new google.maps.LatLng(machineList[i].y, machineList[i].x)}, function(results, status) { address = results[0]; }); 

我收到来自Javascript的类型错误,声称结果为空。我不知道为什么会发生这种情况。有任何想法吗?

+0

什么具体的值导致null返回? – 2012-07-25 21:37:23

+0

明白了 - 经纬度是38.1471977000 -97.4348983000。错误现在来自使用该值的行 - 'data + = address.formatted_address'。不要问我为什么 - 我完全没有线索。尽管现在我认为这是一个计时问题 - 如果我在实际使用地址值之前插入警报,则不会出现错误。 – Crash 2012-07-26 15:13:25

回答

3

那么,事实证明这是一个时间问题。对于某些位置,geocode()命令的完成时间比其他位置长,这导致值显示为空。我最终通过将所有后续代码移入回调函数来消除该问题(我之前没有这样做过,因为整个事情都在循环内部运行,并且我在将它作为迭代器传递给迭代器时遇到了一些困难参数)。现在一切似乎都运转良好,地点正如他们应该显示的那样。

+0

+1分享解决方案。 – 2012-07-26 23:14:39