google map API 分别获得Marker 拖动前后的坐标

我们知道,利用google map API可以监听marker的拖动时间,与拖动相关的事件一共有三个:dragstart, drag, dragend,分别在拖动之前,拖动过程中,以及拖动结束后相应事件,但是无论哪一种事件,都不可能同时获得marker拖动前和拖动后的坐标,有时候,我们又确实需要同时获得这两个坐标进行处理。我所用的方式就是充分利用Marker的属性,确切地说是marker的不变属性,也就是说拖动前和拖动后都不会改变的属性,通过查找google map API, 可以使用marker的title属性作为载体,来保存marker拖动之前的坐标。

代码如下:
//在地图上点击生成一个Marker
GEvent.addListener(map_f1,"click", function(overlay,latlng) {
         if (overlay) {
           // 忽略点击在信息窗口上的事件
   return;
         }
//定义一个newMarker
var newMarker = new GMarker(latlng, {draggable: true});
//点击newMarker时触发的事件
   GEvent.addListener(newMarker, 'click',
   function(){
            newMarker.openInfoWindow(createInfoWindow(newMarker));
       });
//将拖动之前的经纬度坐标放到newMarker的title属性  
newMarker.title = newMarker.getLatLng().lat()+","+newMarker.getLatLng().lng();  
map_f1.addOverlay(newMarker);
//监听newMarker的dragend事件        
GEvent.addListener(newMarker,'dragend',function(latlng){  
   var title = newMarker.title;
   var points = title.split(",");
   var s_lat = points[0];//拖放前纬度
   var s_lng = points[1]; //拖放后经度
    var e_lat = latlng.lat();//拖放后纬度
   var e_lng = latlng.lng();//拖放后经度})
    });

{);





猜你喜欢

转载自lynneahui.iteye.com/blog/686220