事件lat / lng不匹配AJAX成功数据lat / lng

时间:2017-01-28 16:26:46

标签: javascript jquery ajax google-maps

我想在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)
            }
        }
    });
});

所以我的问题是,为什么差异以及哪一个提供最准确的坐标?

2 个答案:

答案 0 :(得分:1)

latLng事件上的dragend对象是放置引脚的位置,它表示您要查找最接近的映射地址的位置。

  

latlng - 纬度和经度值,指定您希望获取最接近的人类可读地址的位置。

响应中的数据包含找到的最近地址(如果没有找到,则为某些不太具体的地址,例如城镇/城市)。在您的情况下,响应的第一个索引处的地址(这将是最准确的结果)并不是您的引脚坐标的确切位置。

如果你看一下完整的JSON响应,它会变得更加清晰。

JSON

  

注意:反向地理编码是一种估算值。地理编码器将尝试在特定容差内找到最接近的可寻址位置。如果未找到匹配项,则地理编码器将返回零结果。

来源: Reverse Geocoding for a Latitude/Longitude

您可以在此处阅读更多相关主题,其中包括一个示例。

答案 1 :(得分:0)

地理编码功能返回道路的位置(或道路中心或其他可访问的地方)更接近需求坐标..在某些原因导致结果与请求相同...有时..不。你可以测试这个条件..点击(拖动)在一个无法访问的区域..并查看结果..在某些情况下,当拖过河流或无法访问的时候,你可以看到很多米或更多的差异。< / p>