我在mapclick函数上添加了可拖动标记。我不允许使用下面的代码将标记放在地图之外。
if (imageBounds.contains(newPosition)) {
var newMarker = L.marker(newPosition).addTo(map);
}
但我可以将标记拖出图像层,我想阻止这个问题。这是我的代码http://jsfiddle.net/xfdxe2ea/
答案 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);