图层按钮始终处于活动状态,添加 2 个图层时,图例将保留第 1 层
Button for layers are always in active state, legend persists for 1st layer when 2 layers are added
我有一个地图框和瓦磨机图层问题:
在这里查看我的代码:http://bl.ocks.org/marishaf/3cc9bfbeb412c1120e93
图层按钮看起来始终处于"活动"模式,尽管它们仍然加载和卸载图层。
每个图层都会加载图例(公共土地图层和分区图层存在图例),但如果同时加载这两个图层,然后尝试移除这两个图层,则图例将在加载的第一个图层中保留。
图例还会保留工具提示。例如,如果首先加载带有图例的图层(仅当按此顺序加载图层时才会发生),然后加载带有工具提示的图层(例如点源污染),然后将鼠标悬停在某个点上以调用工具提示,然后尝试删除带有图例的图层,则图例将保留。
- 在onclick函数之前删除"link.className = 'active';"。
- 将"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;
};
很抱歉解释混乱,但您同时问了两个问题,这是我能想到的最干净的回答方式。
相关文章:
- 更改图层中单个矢量特征的图标
- 谷歌地图热图图层点半径
- 谷歌地图-更改图层图标大小
- 如何通过ID获取图层对象
- CS5隐藏图层的速度非常慢
- 开放图层导出为 KML 并保留我的地图样式
- 传单问题:使折线的图层组不可单击
- 将图层添加到另一个图层
- 图层删除(图像);在 Kinetic.js 中不起作用
- HTML5 Canvas 的初学者,使用图层
- 如何在“控制缩放”下的“打开图层”上添加一些图像
- 无法让 jQuery floatThead 处理嵌入在选项卡式图层中的表
- 如何在开放层 3 中设置矢量图层选择的样式
- 添加支持异步重新加载的 Web 图层
- 3d图层滑块Wordpress插件:编辑3d颜色
- 在jQuery中移动DOM元素(图层滑块)
- 如何用程序更改传单中的图层
- 从智能对象和图层替换Photoshop中的关键字
- 保留 Google 地图在复选框单击时缩放到 kml 图层
- 图层按钮始终处于活动状态,添加 2 个图层时,图例将保留第 1 层