9

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

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事件中时?

4

2 回答 2

3

这些年来仍然找不到任何解决方案,再次遇到这个问题。我希望有人event.cancelDrag()打电话。

我能想到的就是检查标记是否属于mypolygon如果不将其移回以前的位置:

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

谷歌地图包含位置

谷歌地图活动

于 2017-09-05T20:06:52.667 回答
1

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

于 2011-02-27T00:00:14.887 回答