2016-05-18 9 views
0

私は部屋のインタラクティブマップを作成します。スペースプランがある家の地図上で強調表示されます。部屋を明るくする計画に。 デフォルトは、部屋のオーバーレイイルミネーションを有効にし、オーバーレイマーカーを無効にしたオープンフロアプランです。 さらに、3つのレイヤーのオーバーレイをグループから隠してマップから削除するマップに切り替えると、あなたが戻って、建物の計画に戻ったときbaselayerが変更されたとき、リーフレットでオーバーレイを有効/無効にする方法は?

map.removeLayer(roomsOverlay); 
    map.removeLayer(markersOverlay); 
    map.removeLayer(bld2_1_lbls); 
    layerControl.removeLayer(roomsOverlay); 
    layerControl.removeLayer(markersOverlay); 
    layerControl.removeLayer(bld2_1_lbls); 

は今3オーバーレイ

layerControl.addOverlay(roomsOverlay,"Rooms"); 
    layerControl.addOverlay(markersOverlay,"markersOverlay"); 
    layerControl.addOverlay(bld2_1_lbls,"lab"); 

を返却しなければならないが、今これらのオーバーレイは、彼らがlayercontrolにチェックされていることを行う方法を、無効になっていますか? また、地図のオーバーレイに切り替えるときにアクティブにしたい。

デモ:http://plnkr.co/edit/do27UnlRoWaEyqrs8VHe?p=preview

P.S.

map.on('baselayerchange', function(e) { 
if (e.name=="cartoDBmap") 
{/*some code*/ 
    map.removeLayer(roomsOverlay); //if not remove they can be seen on Africa 
    map.removeLayer(markersOverlay); 
    map.removeLayer(bld2_1_lbls); 
    layerControl.removeLayer(roomsOverlay); 
    layerControl.removeLayer(markersOverlay); 
    layerControl.removeLayer(bld2_1_lbls); 

    layerControl.addOverlay(buildingsOverlay,"buildings"); //how make it checked on layercontrol? 
} 
else 
{/*some code*/ 
    layerControl.addOverlay(roomsOverlay,"Rooms"); //how make it checked on layercontrol? 
    layerControl.addOverlay(markersOverlay,"markersOverlay"); 
    layerControl.addOverlay(bld2_1_lbls,"lab"); 

    layerControl.removeLayer(buildingsOverlay); 
    map.removeLayer(buildingsOverlay); 
} 
console.log(layerControl); 
}); 

答えて

0

リーフレットはあなたが探しているものを聞くことができるbaselayerchange eventを提供します。 map.on('baselayerchange', function(layer) { //do overlay changes });

マップに特定のレイヤーが存在するかどうかを確認するには、マップ上でhasLayerメソッドを使用します。

+0

はい、私はそれを使用します。しかし、私がオーバーレイを追加すると、アクティブではありません(チェックボックスは無効になります)。それをチェックする必要があります。 – xetocumav

0

あなたはlayerControl.addOverlay(buildingsOverlay,"buildings");追加を追加する後:

map.addLayer(buildingsOverlay);

関連する問題