我们知道,利用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();//拖放后经度})
});
{);
google map API 分别获得Marker 拖动前后的坐标
猜你喜欢
转载自lynneahui.iteye.com/blog/686220
今日推荐
周排行