为什么我没有得到确切的经度当我上一个标记点​​击?(Why am i not getting exa

2019-07-03 16:31发布

在我的web应用程序我试图当我点击它来获取标记的经度和纬度。 以下是该设置的标志,然后尝试获得相同标记的纬度和经度,当我点击它的代码:

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

Answer 1:

为了得到标记(不是点击)的位置,使用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);
        }
    });
});


Answer 2:

我把它叫做一个错误。

这不是标记或事件的问题,当您创建的经纬度对象,它已经发生了。

试试这个:

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

你会看到, lngmyLatLng.lng()有不同的值。

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

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



Answer 3:

“错误”发生在构造为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)

也许不相关的在现实世界中任何事情,你会使用地图。

例如计算经度度米计算从这个页面



文章来源: Why am i not getting exact Longitude when i click on a marker?