当我点击标记时,为什么我没有得到精确的经度?

时间:2012-11-09 11:15:37

标签: google-maps google-maps-api-3 google-maps-markers

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

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

3 个答案:

答案 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);

您会看到,lngmyLatLng.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)

可能与您使用地图的现实世界中的任何内容无关。

example calculationthis page

计算经度到米的计算