如何取消谷歌地图标记拖动操作?

时间:2011-02-26 23:32:49

标签: javascript google-maps draggable marker

正如您在以下代码中看到的那样,标记可以拖动。在某些情况下,如果标记被丢弃在错误的区域(多边形),我想取消放置事件,因此标记会自动回到原始位置。

function placeMarker(latlng, color, isDraggable) {
    var marker = new GMarker(latlng, { icon: getIcon(color), draggable: true });
    map.addOverlay(marker);
    GEvent.addListener(marker, "dragend", function () {
        //redraw polygons again
    });
    GEvent.addListener(marker, "click", function () {
        var latlng = marker.getPoint();
        map.openInfoWindowHtml(marker.getPoint(), latlng.y + ", " + latlng.x);
    });
    return marker;
}

问题是,如果标记在dragend事件中已被删除,我该如何取消标记的拖动事件?

2 个答案:

答案 0 :(得分:1)

我不记得Google Map API支持它,但您可以通过将标记的移动保存到堆栈并在需要时提取旧位置来为自己提供此功能。 我知道这不是不可饶恕的答案。这只是一般的想法。但我希望它会有所帮助。

答案 1 :(得分:1)

这些年后仍然无法找到任何解决方案,但又遇到了这个问题。我希望有event.cancelDrag()来电话。

我能想到的只是检查标记是否属于mypolygon,如果没有将其移回原来的位置:

  • dragstart上将当前位置保存为preLocation
  • {li> on dragend使用containsLocation(e.latLng, mypolygon)
    • 是=>什么都不做
    • 否:将标记位置设置为preLocation

google map containsLocation

google map Events