Leaflet Draw:区分多个控件

我正在添加两个Leaflet Draw(
https://github.com/Leaflet/Leaflet.draw)实例(仅使用行):

var drawControl = new L.Control.Draw({
    draw: {
        polygon: false,
        rectangle: false,
        circle: false,
        marker: false
    }
});
map.addControl(drawControl);

var drawControl2 = new L.Control.Draw({
    draw: {
        polygon: false,
        rectangle: false,
        circle: false,
        marker: false
    }
});
map.addControl(drawControl2);

现在我想听画:drawvertex事件并根据我是否激活了drawControl或drawControl2来做不同的事情:

map.on('draw:drawvertex', function (e) {
    console.log("Vertex drawn", e);
});

如何区分哪个drawControl当前处于活动状态?

最佳答案 这是一种了解哪个drawControl处于活动状态的脏方法.

诀窍是将它们放在不同的地图角落.它有助于检查用户绘制时哪些ul.leaflet-draw-actions可见. div.leaflet-top中的那个或div.leaflet-bottom中的那个例如:

var drawControl = new L.Control.Draw({
    position: 'topleft',
    draw: {
        polygon: false,
        rectangle: false,
        circle: false,
        marker: false
    }
});
map.addControl(drawControl);

var drawControl2 = new L.Control.Draw({
    position: 'bottomleft',
    draw: {
        polygon: false,
        rectangle: false,
        circle: false,
        marker: false
    }
});
map.addControl(drawControl2);

map.on('draw:drawvertex', function (e) {
    console.log("Vertex drawn", e);
    if ($('div.leaflet-top ul.leaflet-draw-actions').is(':visible')){
        console.log('it was drawn with drawControl');
    }
    else {
        console.log('it was drawn with drawControl2 !');
    }
});

它很脏但是有效.

点赞