我在申请时使用了leaflet draw,并且我已经删除了'按钮有效。删除按钮有三个选项:
如果用户点击保存,我希望调用函数foo()
,但是,如果他们点击取消bar() >
我知道这可以通过简单地给它一个ID,并添加一个事件监听器来实现,但它并不像我想的那样干净。
Leaflet绘制自己的方法来检测按钮的按下时间,但在我看来,它们只能在更高的一级进行。例如:
draw:deletestop
这是编辑的类型。其中之一:删除当用户完成删除形状(删除模式)并保存时触发。
这允许我在用户选择任意三个选项后调用foo()
,表示他们已完成处理删除按钮互动。
我无法在文档中找到一种方法,可以在正在按下的各个按钮上侦听传单绘制事件。
答案 0 :(得分:2)
取消/禁用功能的处理程序存储为L.Control.Draw
实例的一部分。因此,您可以在实例化L.Control.Draw
对象后立即修改处理程序:
var myDrawControl = new L.Control.Draw();
myDrawControl._toolbars.edit.disable = function () {
if (!this.enabled()) {
/* If you need to do something right as the
edit tool is enabled, do it here right
before the return */
return;
}
this._activeMode.handler.revertLayers();
/* If you need to do something when the
cancel button is pressed and the edits
are reverted, do it here. */
L.Toolbar.prototype.disable.call(this);
};
处理程序的源代码是here,虽然效果很好,但您必须小心使用可能会改变处理程序功能的Leaflet.Draw的未来版本。
答案 1 :(得分:2)
最新版本的Leaflet.draw 0.4.14你可以使用
map.on(' draw:toolbarclosed',function(){//在此处添加代码});