4

在我的网络应用程序中,当我单击它时,我试图获取标记的经度和纬度。以下是设置标记的代码,然后当我单击它时尝试获取相同标记的纬度和经度:

  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。为什么我没有得到正确的经度?提前致谢。

4

3 回答 3

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);
        }
    });
});
于 2012-11-09T14:03:13.500 回答
0

我会称之为错误。

这不是标记或事件的问题,它在您创建 LatLng 对象时已经发生。

尝试这个:

var lat=55.68322317670628,
     lng=13.177157360327598,
     myLatLng = new google.maps.LatLng(lat,lng);

你会看到,那lngmyLatLng.lng()不同的价值观。

http://jsfiddle.net/doktormolle/Jm9Ww/

作为一种解决方法,我建议使用精度为 6-10 位小数的不太准确的值。

于 2012-11-09T11:27:36.217 回答
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)

可能与您将使用地图的现实世界中的任何事物无关。

示例计算 经度到米的计算从此页面

于 2012-11-10T17:25:57.643 回答