web-dev-qa-db-ja.com

リーフレットのレイヤーコントロールにレイヤーグループのレイヤーを動的に追加する

xhr呼び出しを介して一連のベクターレイヤーを作成しており、レイヤーグループにを追加し、そのレイヤーグループをレイヤーコントロールに追加したいと考えています。私の考え方は

1. Add a layer control to the map with only the base layer in the control
2. Create a layer via `xhr`  
   2.1. Check if layer group LG exists in layer control  
      2.1.1. If yes, add layer to LG
      2.1.2. If no, add layer group LG to layer control and add layer to LG
3. Repeat #2 above.

さて、私は上記を試しました(レイヤーグループ部分なしで)そしてそれはうまくいきます(以下のコード)。

LC = L.control.layers({'OSM': osm}).addTo(map);

その後

x.onload = function(e) {
    if (x.readyState === 4) {
        if (x.status === 200) {
            var res = JSON.parse(x.responseText);
            ..
            LC.addOverlay(lyr, "layer name");
        }
    }
};

しかし、レイヤーグループでそれを行うことができません。提案を歓迎します。

8
punkish

Ajaxコールバックで、

layerGroup = L.layerGroup()
        .addLayer(vector1))
        .addLayer(vector2))
        .addLayer(vector3))
        ....
        .addTo(map);

if(layerControl === false) {  // var layerControl set to false in init phase; 
    layerControl = L.control.layers().addTo(map);
}

layerControl.addOverlay(layerGroup , "My batch of vectors");

ここの例を参照してください: http://jsfiddle.net/FranceImage/9xjt8223/

8
YaFred