2016-07-22 19 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