我想在Google地图标记完成拖动时检索正确的 lat / lng 。
但是对于同一个精确点,它给出了两个不同的(非常近似的)坐标。
evt.latLng
: 39.82213542984826,-7.484207724853491
data.results[0].geometry.location
: 39.822158,-7.484110899999998
用于获得这些结果的代码:
google.maps.event.addListener(marker, 'dragend', function (evt) {
$.getJSON({
url: "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + evt.latLng.lat() + "," + evt.latLng.lng() + '&key=ABC',
data: {},
success: function (data, status) {
if (data.status == "OK") {
$('#div').html(evt.latLng.lat() + ", " + evt.latLng.lng() + '<br />' + data.results[0].geometry.location.lat + ', ' + data.results[0].geometry.location.lng)
}
}
});
});
所以我的问题是,为什么差异以及哪一个提供最准确的坐标?
答案 0 :(得分:1)
latLng
事件上的dragend
对象是放置引脚的位置,它表示您要查找最接近的映射地址的位置。
latlng - 纬度和经度值,指定您希望获取最接近的人类可读地址的位置。
响应中的数据包含找到的最近地址(如果没有找到,则为某些不太具体的地址,例如城镇/城市)。在您的情况下,响应的第一个索引处的地址(这将是最准确的结果)并不是您的引脚坐标的确切位置。
如果你看一下完整的JSON响应,它会变得更加清晰。
注意:反向地理编码是一种估算值。地理编码器将尝试在特定容差内找到最接近的可寻址位置。如果未找到匹配项,则地理编码器将返回零结果。
来源: Reverse Geocoding for a Latitude/Longitude。
您可以在此处阅读更多相关主题,其中包括一个示例。
答案 1 :(得分:0)
地理编码功能返回道路的位置(或道路中心或其他可访问的地方)更接近需求坐标..在某些原因导致结果与请求相同...有时..不。你可以测试这个条件..点击(拖动)在一个无法访问的区域..并查看结果..在某些情况下,当拖过河流或无法访问的时候,你可以看到很多米或更多的差异。< / p>