使用jQuery插件的Google Maps API:如何在单击时获取标记的纬度和经度?

3
我正在使用Google Maps API V3的插件。我用它在地图上放置一个标记,并允许用户将标记拖动到地图上的某个位置。我希望在单击时获取标记的lat、lng。

goMap插件页面: http://www.pittss.lv/jquery/gomap/index.php

这是设置标记的函数。

$("#map").goMap({ 
   zoom: 16,
   maptype: 'ROADMAP',
   navigationControl: false, 
   mapTypeControl: false, 
   scrollwheel: true, 
   disableDoubleClickZoom: false,
   markers: [{  
       draggable:true,
       latitude: data.lat, 
       longitude: data.lng, 
       icon:'./images/pink.png'
  }] 
});           

我尝试在goMap()上调用原生的getLat()方法,但我认为我做得不对。非常感谢任何帮助。


1
我正在寻找像goMap这样的插件,这个问题把我指向了正确的方向。谢谢。 - Daniel Skowroński
2个回答

4
经过一些调查,看起来它使用jQuery的data() 函数来将数据绑定到地图上。你可以通过$('#map').data()获取标记信息。每个标记都有一个id,你可以通过数组$.goMap.markers获取标记的id。注意,$.goMap.markers仅包含ID字符串,而不是标记本身。
你需要使用该数组找到所需的ID(或者您可能事先知道该ID),然后调用$('#map').data()['MARKER_ID']来获取标记对象。标记具有一些属性,包括titlevisibleiconidposition
我们关心position,它有两个属性,wayawa似乎是纬度,而ya似乎是经度。因此,例如,$('#map').data()['MARKER_ID'].position.wa将获取您的纬度。看起来有些标记有一个latitudelongitude属性,不确定为什么不总是存在(至少在我的简要测试中),但您可以尝试使用$('#map').data()['MARKER_ID'].latitude 代替。
希望这有所帮助。

1

我不知道为什么,但是属性名称经常随时间变化...似乎最好的解决方案是获取键名并用于了解纬度和经度。

因此,如果您想在拖动后获取坐标,例如,您将使用:

$.goMap.createListener({type:'marker', marker:'MARKER_ID'}, 'dragend', function() {

    var i_prop = 2;
    var map_data_marker = $('#map').data()['MARKER_ID'].position;
    var map_data_marker_keys = [];

    for (var key in map_data_marker)
    {
        if (i_prop--)
        {
            if (map_data_marker.hasOwnProperty(key))
            {
                map_data_marker_keys.push(key);
            }
        }
        else
        {
            break;
        }
    }

    var lat_lng = map_data_marker[map_data_marker_keys[0]] + ', ' + map_data_marker[map_data_marker_keys[1]];

}); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接