2016-10-14 9 views
4
私はこのような( https://github.com/Leaflet/Leaflet.draw)を描くリーフレットの2つのインスタンスを追加している

(のみ使用して行を):リーフレットはドロー:複数のコントロールを区別する

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); 

は今、私はdraw:drawvertexイベントに耳を傾けたいと異なることを行います私はdrawControlまたはdrawControl2を有効にした場合に応じて:

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

どのように私はdrawControlが現在アクティブであるかを区別することができますか?

答えて

0

ここでは、どのdrawControlがアクティブであるかを知るための、汚い方法です。

トリックは、それらを異なる地図のコーナーに置くことです。ユーザーが描画するときにどのul.leaflet-draw-actionsが表示されるかを確認するのに役立ちます。 div.leaflet-topの1または例えばdiv.leaflet-bottomで1:

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 !'); 
    } 
}); 

それは汚いですが、それは動作します。

関連する問題