将Pane TileLayers与LayerGroup Control集成(V1.0)

时间:2016-07-22 15:19:57

标签: leaflet

我正在尝试找到一种方法,将图层组控件与2个图块图层可见的方法相结合,使标签位于我生成的多边形上方。

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);

1 个答案:

答案 0 :(得分:0)

  1. 确保明确创建窗格:
  2. map.createPane("labels");
    
    1. 创建Layer Groups以收集您的图块层(底图和标签),而不是普通的JS对象。宣传单不会使用您的普通物品。
    2. 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/