Lealefjs:防止将标记拖出ImageLayer边界

时间:2015-11-06 15:09:34

标签: javascript leaflet

我在mapclick函数上添加了可拖动标记。我不允许使用下面的代码将标记放在地图之外。

if (imageBounds.contains(newPosition)) {
    var newMarker = L.marker(newPosition).addTo(map);
}

但我可以将标记拖出图像层,我想阻止这个问题。这是我的代码http://jsfiddle.net/xfdxe2ea/

1 个答案:

答案 0 :(得分:0)

I've edited your fiddle实现你想要的目标。

基本上,我所做的是为drag事件注册一个处理程序,然后每次调用处理程序时,我都会检查标记是否仍在所需的范围内。如果是,我将其位置存储在可通过闭包访问的变量中,这可以看作是最后一个已知的有效位置。 如果标记位置变为"无效" (在界限之外),然后我"手动"将其替换为其最后已知的有效位置。

var lastValidPosition;
newMarker.on("drag", function(event) {
    var latLng = newMarker.getLatLng();
    if (imageBounds.contains(latLng)) {
        lastValidPosition = latLng;
    } else {
        if (lastValidPosition) {
            newMarker.setLatLng(lastValidPosition);
        }
    }
}, newMarker);