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

(クリックではなく) マーカーの位置を取得するには、event.latLng ではなく、marker_obj.getPosition() を使用します。

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

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 に答える
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 に答える