在我的网络应用程序中,当我点击它时,我正在尝试获取标记的经度和纬度。以下是设置标记的代码,然后点击它时尝试获得相同标记的纬度和经度:
var myLatlng = new google.maps.LatLng(55.68322317670628, 13.177157360327598);
var marker_obj = new google.maps.Marker({
clickable: true,
position: myLatlng,
map: dashboard_map,
zIndex: i
});
marker_obj.setIcon('marker.png');
google.maps.event.addListener(marker_obj, "click", function(event) {
var myLatLng = event.latLng;
var lat1 = myLatLng.lat();
var lng1 = myLatLng.lng();
console.log('marker latitude: '+lat1);
console.log('marker longitude: '+lng1);
$.ajax({
type: 'POST',
url: 'http://localhost:8888/action',
data: { latitude: lat1, longitude: lng1},
success: function(result) {
console.log(result);
}
});
});
当我点击标记时,我得到正确的纬度,但经度不一样。经度值为13.177157360327556,原始标记经度值为13.177157360327598。为什么我没有得到正确的经度?提前谢谢。
答案 0 :(得分:2)
要获取标记的位置(而不是单击),请使用marker_obj.getPosition()而不是event.latLng。
google.maps.event.addListener(marker_obj, "click", function(event) {
var myLatLng = marker_obj.getPosition();
var lat1 = myLatLng.lat();
var lng1 = myLatLng.lng();
console.log('marker latitude: '+lat1);
console.log('marker longitude: '+lng1);
$.ajax({
type: 'POST',
url: 'http://localhost:8888/action',
data: { latitude: lat1, longitude: lng1},
success: function(result) {
console.log(result);
}
});
});
答案 1 :(得分:0)
我称之为bug。
这不是标记或事件的问题,它在您创建LatLng对象时已经发生。
试试这个:
var lat=55.68322317670628,
lng=13.177157360327598,
myLatLng = new google.maps.LatLng(lat,lng);
您会看到,lng
和myLatLng.lng()
具有不同的值。
<强> http://jsfiddle.net/doktormolle/Jm9Ww/ 强>
作为一种解决方法,我建议使用精度为6-10小数的精度较低的值。
答案 2 :(得分:0)
google.maps.LatLng对象的构造函数中出现“错误”。
var latitude = 55.68322317670628;
var longitude = 13.177157360327598;
var myLatlng = new google.maps.LatLng(latitude, longitude);
var longitude_diff = longitude-myLatlng.lng();
“错误”是:
longitude diff: 4.263256414560601e-14 degrees
longitude diff: 2.681678819840079e-9 meters (2.68 nanometers)
可能与您使用地图的现实世界中的任何内容无关。
计算经度到米的计算