在Google地图中,当我拖动文本框中显示的标记lat()
和lng()
值时。我想在这里喜欢:
Coordinates change for every movement
我的以下代码部分适合我。但是,当我将标记拖到远处时,它会起作用,但是 in
距离 lat()
和lng()
不会改变?
我该如何解决这个问题?
主js代码是:
// fill in the UI elements with new position data
function update_ui(address, lat, lng) {
$('#lat').val(lat);
$('#lng').val(lng);
}
// move the marker to a new position, and center the map on it
function update_map(geometry) {
map.fitBounds(geometry.viewport)
marker.setPosition(geometry.location)
}
和地理编码:
geocoder.geocode(request, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
// Google geocoding has succeeded!
if (results[0]) {
// Always update the UI elements with new location data
update_ui(results[0].formatted_address, results[0].geometry.location.lat(), results[0].geometry.location.lng())
// Only update the map (position marker and center map) if requested
if (update) { update_map(results[0].geometry) }
} else {
// Geocoder status ok but no results!?
alert("Error occured. Please try again.");
}
} else {
// Google Geocoding has failed. Two common reasons:
// * Address not recognised (e.g. search for 'zxxzcxczxcx')
// * Location doesn't map to address (e.g. click in middle of Atlantic)
if (type == 'address') {
alert("Sorry! We couldn't find " + value + ". Try a different search term, or click the map.");
} else {
alert("Sorry! We couldn't find " + value + ". Try a different search term, or click the map.");
update_ui('', value.lat(), val.lng())
}
};
});
修改
当我拖动标记很少时,坐标不会改变,但在一些移动后它们会改变。这是jsfiddle:
答案 0 :(得分:1)
问题在于您是通过地理编码器传递标记的位置。
地理编码器获取原始的lat / lng位置并尝试将其映射到地址。这可以是街道,城镇或地区。 Google地理编码器返回的结果包括地址文本以及该地址的位置。
您正在显示地理编码器返回的位置。当用户在具有低密度潜在地址的区域周围移动标记时,您将看到锯齿。这意味着用户“选择”的各种原始位置将反转地理编码为地理编码器返回的相同地址。
因此,当你正在做的是显示地理编码地址的纬度/经度时,看起来好像标记的纬度/经度没有变化。
请注意,您链接到的网站在显示位置信息时不会执行任何地理编码。