2016-07-22 60 views
1

我想找到一种方法集成图层组控制与有2个瓷砖层可见的方法,使标签坐在我生成的多边形之上。集成面板TileLayers与LayerGroup控制(V1.0)

http://leafletjs.com/examples/layers-control.html - 图层组指导 http://leafletjs.com/examples/map-panes.html - 窗格引导

我的目标是让经常使用深色和浅色cartodb地图作为选项 - 但仍然利用的窗格功能。

我曾尝试过类似下面的内容,但我不相信单张能够以这种方式处理它。

有没有人找到一种方法,但尚未正确整合?

var darkTile = L.tileLayer('http://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}.png', { 
     attribution: '©OpenStreetMap, ©CartoDB' 
    }).addTo(map); 

    var darkLabels = L.tileLayer('http://{s}.basemaps.cartocdn.com/dark_only_labels/{z}/{x}/{y}.png', { 
     attribution: '©OpenStreetMap, ©CartoDB', 
     pane: 'labels' 
    }).addTo(map); 

    var lightTile = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png', { 
     attribution: '©OpenStreetMap, ©CartoDB' 
    });//.addTo(map); 

    var lightLabels = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_only_labels/{z}/{x}/{y}.png', { 
     attribution: '©OpenStreetMap, ©CartoDB', 
     pane: 'labels' 
    });//.addTo(map); 
    var light = { 
     lightTile, 
     lightLabels 
    }; 

    var dark = { 
     darkTile, 
     darkLabels 
    }; 

    var baseMaps = { 
     "Light" : light, 
     "Dark" : dark 
    }; 

    L.control.layers(baseMaps).addTo(map); 

回答

0
  1. 请务必建立明确的窗格:
map.createPane("labels"); 
  • 创建Layer Groups收集您的图块层(底图和标签),而不是简单的JS对象。宣传单将不会使用您的普通物品。
  • var light = L.layerGroup([ 
        lightTile, 
        lightLabels 
    ]); 
    
    var dark = L.layerGroup([ 
        darkTile, 
        darkLabels 
    ]).addTo(map); // Add the group to map, rather than its individual layers. 
    

    演示:http://jsfiddle.net/3v7hd2vx/45/

    +0

    完美 - 感谢您的帮助和解释:) – ConnorLynch

    +0

    欢迎您!请注意,SO感谢人的方式也是**接受**帮助你的答案。一旦你有了足够的“名声”,你也将有能力“高兴”。 – ghybs