如何判断哪个标记被拖动为Google Maps API拖动事件?

时间:2011-09-09 19:36:15

标签: google-maps google-maps-api-3

Google Maps V3 API中的“drag”,“dragstart”和“dragend”事件都会将mouseEvent传递给已注册的回调函数。

但是 - 此事件不包含正在拖动哪个标记的任何信息。我该如何确定?

如果您只是查看“dragend”事件 - 这只会有 new 坐标,甚至无法从坐标推断出来,这就更复杂了。

我认为必须有一种简单的方法来确定拖动哪个标记......

1 个答案:

答案 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);
        }        

});
}