如何将图层设置为已编辑以调用 draw:edited
How to set a layer as edited to call draw:edited
我正在尝试使用 Leaflet.Draw 在地图上手动创建标记。
当我在 draw:created 处理程序中添加带有 Leaflet.Draw 的标记时,我想打开一个创建表单的弹出窗口。
远离这里,一切正常,我可以处理并在数据库中保存该弹出窗口和标记的创建。
这里的转折点是我想编辑它的时候:
我点击编辑按钮,它使标记可编辑,我点击它打开带有表单的弹出窗口。我更改了弹出窗口中的消息,单击将调用 draw:edited 处理程序的编辑工具栏保存按钮。
不幸的是,我的标记没有移动,因此不被视为编辑图层。
如何将该标记设置为 "Edited" 以被 draw:edited 处理程序视为已编辑,即使它没有移动?
事实上,这些处理程序是如何工作的?
查看 Leaflet.Draw 源代码,它将 dragend
事件挂接到这样的标记上
_onDragEnd: function (e) {
var layer = e.target;
layer.edited = true;
this._map.fire(L.Draw.Event.EDITMOVE, {layer: layer});
}
您可以在代码中设置 layer.edited
属性(其中 layer
是您的标记)。
我正在尝试使用 Leaflet.Draw 在地图上手动创建标记。 当我在 draw:created 处理程序中添加带有 Leaflet.Draw 的标记时,我想打开一个创建表单的弹出窗口。
远离这里,一切正常,我可以处理并在数据库中保存该弹出窗口和标记的创建。
这里的转折点是我想编辑它的时候:
我点击编辑按钮,它使标记可编辑,我点击它打开带有表单的弹出窗口。我更改了弹出窗口中的消息,单击将调用 draw:edited 处理程序的编辑工具栏保存按钮。
不幸的是,我的标记没有移动,因此不被视为编辑图层。
如何将该标记设置为 "Edited" 以被 draw:edited 处理程序视为已编辑,即使它没有移动?
事实上,这些处理程序是如何工作的?
查看 Leaflet.Draw 源代码,它将 dragend
事件挂接到这样的标记上
_onDragEnd: function (e) {
var layer = e.target;
layer.edited = true;
this._map.fire(L.Draw.Event.EDITMOVE, {layer: layer});
}
您可以在代码中设置 layer.edited
属性(其中 layer
是您的标记)。