2

我有一个 mapbox 和 tilemill 图层问题:

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

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

为每个图层加载图例(Public Land 和 Zoning 图层存在图例),但如果您同时加载这两个图层然后尝试删除这两个图层,则图例对于加载的第一个图层仍然存在。

该图例也与工具提示一起存在。例如,如果您首先加载带有图例的图层(仅在按此顺序加载图层时才会发生),然后是带有工具提示的图层(例如点源污染),然后将鼠标悬停在一个点上,以便调用工具提示,然后尝试删除带有图例的图层,图例仍然存在。

4

1 回答 1

0
  1. 删除“link.className = 'active';” 在 onclick 功能之前。
  2. 将“if (map.hasLayer(layer))”语句更改为更类似于“else”语句(“layer”而不是“thelayer”并且只有一个“className”更改)。

片段:

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;  

};

很抱歉解释混乱,但你一次问了两个问题,这是我能想到的最干净的回答方式。

于 2014-04-09T16:52:01.043 回答