这是我的演示页面,拖动标记后它将响应坐标,但是我发现如果将鼠标拖动到某个地方,坐标经常会出错,尤其是在河边,但是如果使用真实的Google地图网站并单击任意放在河上,您将获得正确的坐标,如果您通过Google地图网站的坐标绘制地图,那将是正确的,如何解决?
答案 0 :(得分:1)
我相信您代码中的问题在以下内容中
google.maps.event.addListener(marker, 'dragend', function() {
geocoder.geocode({
latLng: marker.getPosition()
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[0]) {
var responseAddress = results[0].formatted_address;
var locations = results[0].geometry.location;
lat.value = locations.lat();
lng.value = locations.lng();
}
}
});
});
完成拖动标记后,您将执行反向地理编码并从反向地理编码的结果中获取坐标。请注意,反向地理编码通常不会返回标记的位置,它将返回最近的已知地址位置。
为说明这一点,请看一下Geocoder工具及其如何解析靠近河流的坐标25.082015,121.501121
您会看到坐标25.082015,121.501121
被解析为坐标为25.081415,121.499519
的最近地址(道路上的标记A)。因此,当您绘制第二张地图时,它使用解析地址的坐标而不是标记的坐标。
为了解决这个问题并让标记的坐标更改代码为
google.maps.event.addListener(marker, 'dragend', function() {
lat.value = marker.getPosition().lat();
lng.value = marker.getPosition().lng();
});
您根本不需要反向地理编码。我希望这有帮助!