2016-04-08 55 views
0

ここに私のバイオリンは、次のとおりです。http://jsfiddle.net/anton9ov/twxx4up8/にする方法チェックボックス、ラジオボタンのように動作制御

私は2つのベースレイヤーと私マップ上のマーカーのセットを持つ2つの上層を持っています。私はラジオボタンのようなオーバーレイの動作を切り替えるチェックボックスを作りたい。私。私はそれらのうちの1つだけを同時に選択したいと思っています。

L.control.layers({ 
    "Map 1": basemap1, 
    "Map 2": basemap2 
}, { 
    "Marker 1": markerLayer1, 
    "Marker 2": markerLayer2 
}).addTo(map); 
+1

GIS.SEの[この質問](http://gis.stackexchange.com/q/180644/56906)を参照してください。基本的には、 'overlayadd'イベントを待ち受けて、どのレイヤーが追加されているのかを確認し、他のレイヤーを削除します。それは何らかの理由でタイムアウトが必要ですが、動作します。例:http://jsfiddle.net/gwulo/5euduuun/1/ – nathansnider

答えて

0

あなたはL.Control.Layersを書き換えると置き換えることができます

input = document.createElement('input'); 
input.type = 'checkbox'; 
input.className = 'leaflet-control-layers-selector'; 
input.defaultChecked = checked; 

input = this._createRadioElement('leaflet-control-layers-selector', checked); 

チェックして、このごjsfiddleに基づいてexample

この例では、迅速かつ汚いですが、それはに降りますあなた自身のコントロールを書いてください。

-1

以下のように、目的の出力用にleaflet.jsファイル(Line 4388)を直接編集できます。

t.overlay ? (i = e.createElement("input"), i.type = "checkbox", i.className = "leaflet-control-layers-selector", i.defaultChecked = s) : i = this._createRadioElement("leaflet-base-layers", s), i.layerId = o.stamp(t.layer), o.DomEvent.on(i, "click", this._onInputClick, this); 

このことができます

t.overlay ? (i = this._createRadioElement('leaflet-control-layers-selector', s)) : i = this._createRadioElement("leaflet-base-layers", s), i.layerId = o.stamp(t.layer), o.DomEvent.on(i, "click", this._onInputClick, this); 

希望と交換してください!

+0

なぜこの答えが下降したのか分かりません。役立たないかどうかを説明するコメントがあったはずです – shahryar

関連する問題