2017-03-11 8 views
1

にレイヤを追加します。私は(更新小さな例リーフレット - ....ので、私は他のレイヤが追加された場合、レイヤを追加したいLayerAddイベント

var mymap = L.map('mymap').setView([51.505, -0.09], 13); 

var baseLayer = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
    maxZoom: 18, 
}).addTo(mymap); 

var layer1 = L.marker([51.505,-0.10]); 
var layer2 = L.marker([51.505,-0.09]); 
var layer3 = L.marker([51.505,-0.8]); 



var basemaps = { 
    "OSM": baseLayer 
}; 

var overlays = { 
    "Layer1": layer1, 
    "Layer2": layer2, 
    "Layer3": layer3 
} 

L.control.layers(basemaps,overlays,{collapsed:false}).addTo(mymap); 

layer1.on("add",function(){ 
    layer2.addTo(mymap); 
}); 

JSFiddleに作りましたバージョン)

2番目のマーカーがすぐに追加されますが、すぐに追加イベントが終了した後に削除されることがあります... Iamは、それをより具体的にどのように行うか、 2番目のマークを追加できます

+0

jsfiddleは 'layeradd'イベントがレイヤー・オブジェクト 上では動作しません。また、' map.on(「layeradd」)は 'まだ同じ問題を作り出すので、 – Sharky

答えて

0

....(レイヤでさえも一瞬で活性化チェックボックスイマイチを制御するので)えー、あなたはmap.on('layeradd')を使用したり、​​オブジェクト上layeradd イベントを試すことができます。

リーフレットのドキュメントへのリンク:http://leafletjs.com/reference-1.0.3.html#layerevent

EDIT ... JS-フィドルコードに次のコードを追加します。

layer1.on('add',(e)=>{ 
    layer2.addTo(mymap); 
}); 

layer1.addTo(mymap); 

それは

setTimeout(()=>{ 
    layer1.addTo(mymap); 
},500); 

EDIT以下の上からADDTO行を削除して貼り付けていない場合2:

var controlObj = L.control.layers(basemaps,overlays,{collapsed:false}).addTo(mymap); 

layer1.on("add",function(){ 
console.log(controlObj._form[2].click()) 
}); 

このコードは動作します...しかし、その方法ではなく、それをこれを行うより良い方法を見つけなければならないでしょうが、これは一時的に機能します。

+0

を動作しません(層はまもなくで加えるが、削除されますイベントの終わり) 新しい参照してください(この時間はopfully作業)[JSFiddle] [1] は、[1] ...アラートが開いて死ぬ2つのマーカーが表示されている方法を参照してください:https://でjsfiddle。 net/xtg0nt6x/2/ – daHappy

+0

答えを編集しました。それは働いている。 –

+0

もJS-Fiddleを更新しました。 –

関連する問題