确定何时单击Leaflet Draw取消按钮

时间:2017-08-23 12:17:05

标签: javascript leaflet leaflet.draw

问题

我在申请时使用了leaflet draw,并且我已经删除了'按钮有效。删除按钮有三个选项:

  1. 保存
  2. 取消
  3. 全部清除
  4. 如果用户点击保存,我希望调用函数foo(),但是,如果他们点击取消bar() >

    Live demo

    解决方案

    我知道这可以通过简单地给它一个ID,并添加一个事件监听器来实现,但它并不像我想的那样干净。

    理想解决方案

    Leaflet绘制自己的方法来检测按钮的按下时间,但在我看来,它们只能在更高的一级进行。例如:

      

    draw:deletestop这是编辑的类型。其中之一:删除当用户完成删除形状(删除模式)并保存时触发。

         

    - Leaflet Docs

    这允许我在用户选择任意三个选项后调用foo(),表示他们已完成处理删除按钮互动。

    我无法在文档中找到一种方法,可以在正在按下的各个按钮上侦听传单绘制事件。

2 个答案:

答案 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(){//在此处添加代码});