Google Maps V3 API中的“drag”,“dragstart”和“dragend”事件都会将mouseEvent传递给已注册的回调函数。
但是 - 此事件不包含正在拖动哪个标记的任何信息。我该如何确定?
如果您只是查看“dragend”事件 - 这只会有 new 坐标,甚至无法从坐标推断出来,这就更复杂了。
我认为必须有一种简单的方法来确定拖动哪个标记......
答案 0 :(得分:2)
我会在创建时使用侦听器将拖动事件添加到标记。
google.maps.event.addListener(marker, 'dragend', function() {
//do something with the event.
});
这是一个示例小提琴:http://jsfiddle.net/2YQg6/10/ (别介意我刚刚编辑过的其他东西,我以前用它来处理可拖动的标记。)
相关代码位于标记创建循环中:
//geo code and build markers for each list item.
for (var i = 0; i < $listItems.length; i++) {
geocoder.geocode({
'address': $($listItems[i]).text()
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
draggable: true,
originalPos: results[0].geometry.location
});
google.maps.event.addListener(marker, 'dragend', function() {
infoWindow.setContent("marker originally at this position: " + this.originalPos + " was dragged to: " + this.position);
infoWindow.open(map, this);
});
markers.push(marker);
}
});
}