图层按钮始终处于活动状态,添加2个图层时图例将保留第1层

时间:2014-04-06 20:06:59

标签: javascript leaflet mapbox tilemill

我有mapbox和tilemill图层问题:

在这里查看我的代码: http://bl.ocks.org/marishaf/3cc9bfbeb412c1120e93

图层按钮总是看起来它们处于“活动”模式,尽管它们仍然可以加载和卸载图层。

每个图层的图例加载(公共土地和分区图层都存在图例),但是如果您同时加载这两个图层然后尝试删除这两个图层,则图例会在加载的第一个图层中保留。

图例仍然存在工具提示。例如,如果首先加载带有图例的图层(仅在按此顺序加载图层时),然后加载带有工具提示的图层(例如点源污染)并将鼠标悬停在某个点上,以便调用工具提示然后尝试使用图例删除图层,图例仍然存在。

1 个答案:

答案 0 :(得分:0)

  1. 删除" link.className ='有效';"在onclick功能之前。
  2. 更改" if(map.hasLayer(layer))"声明更类似于" else"一个("图层"而不是" thelayer"只有一个" className"更改)。
  3. 段:

    link.href = '#';
    // remove line that was here
    link.innerHTML = name;
    
    
    link.onclick = function(e) {
        e.preventDefault();
        e.stopPropagation();
    
        if (map.hasLayer(layer)) {
            map.removeLayer(layer);
            map.removeLayer(gridlayer);
            // you had "thelayer", but it should be "layer":
            map.legendControl.removeLegend(layer.getTileJSON().legend);
            // change two lines that were here to the following:
            this.className = '';
        } else {
            map.addLayer(layer);
            map.addLayer(gridlayer);
            this.className = 'active';
            map.legendControl.addLegend(layer.getTileJSON().legend);
    
        }
           thelayer = layer;  
    
    };
    

    对于凌乱的解释感到抱歉,但你一次又问了两个问题,这是我能想到的最干净的答案。