L.Control传播事件

时间:2017-06-29 09:39:16

标签: javascript leaflet

我通过扩展L.Handler并在addHooks方法中为map click事件添加处理程序来创建自定义处理程序。从外部代码,我也为click事件添加处理程序。我在自定义处理程序中使用L.DomEvent.stop(e),但事件传播和外部代码处理它。这似乎是一个错误。



const map = L.map("map", {
      boxZoom: false
    }).setView([39.50, -98.35], 5);

    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

L.CustomHandler = L.Handler.extend({

      initialize: function(map) {
        this._map = map;
      },

      addHooks: function() {
        this._map
          .on('click', this._onMapClick, this)
      },
      
      _onMapClick: function(e) {
        L.DomEvent.stop(e.originalEvent);
        console.log('map click from handler');
      },

      removeHooks: function() {
        this._map
          .off('click', this._onMapClick, this);
      },

    });
    
map.addHandler('customHandler', L.CustomHandler);

map.customHandler.enable();

map.on('click', (e) => console.log('map click'));    




请参阅我的plunker pls https://plnkr.co/edit/yuh67rrsOZYSpUjXam4g?p=preview

0 个答案:

没有答案