首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按钮的图层始终处于活动状态,当添加2层时,图例在第1层保持不变。

问按钮的图层始终处于活动状态,当添加2层时,图例在第1层保持不变。
EN

Stack Overflow用户
提问于 2014-04-06 20:06:58
回答 1查看 209关注 0票数 2

我有一个mapbox和tilemill层问题:

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

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

每个层的图例加载(公用土地和分区层都有图例),但是如果加载这两个层,然后尝试移除这两个层,则第一个加载层的图例将保持不变。

这个传说在工具提示中也依然存在。例如,如果首先加载图例层(仅在按此顺序加载图层时发生),然后加载带有工具提示(例如点源污染)的图层,然后在点上鼠标,从而调用工具提示,然后尝试用图例删除图层,则图例将持续。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 16:52:01

  1. 在onclick函数之前删除"link.className = 'active';“。
  2. 将"if (map.hasLayer(layer))“语句更改为更类似于”one“("layer”而不是"thelayer“,而只有一个"className”更改)。

片段:

代码语言:javascript
复制
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;  

};

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22899336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档