(作者:奈何丶一梦,撰写时间:2019年1月16日)
该方法基于SuperMap iClient for javaScript Help
下面是实现效果截图:
由图可见图层管理器中可操作显示的只有一个图层,实现步骤如下:
步骤一:新增图层管理器控件
//创建图层管理器
var layerSwitcher = new SuperMap.Control.LayerSwitcher();
map.addControl(layerSwitcher);//添加控件到地图
步骤二:注册一个地图的监听事件 changelayer名称为listener(名称不固定)
可在SuperMap iClient for javaScript Help 的API中的地图类SuperMap.Map找到
代码实现如下:
//图层信息发生改变时的监听事件
map.events.register("changelayer", undefined, listener);
步骤三:书写方法listener代码如下:
//图层管理器限制显示图层量
function listener(data) {
var name = data.layer.name;//获取改变图层的名称
var visibility = data.layer.visibility;//获取当前改变图层是显示的还是隐藏的
var allMapStorey = ["医院分布图", "社康分布图", "药店分布图", "病例分布散点图", "病例分布热力图", "病原基因分布图"];//限制显示的图层名称的数组
if (visibility == true) {//当前改变图层为显示的时候
for (var i = 0; i < allMapStorey.length; i++) {//循环图层名称数组
if (name != allMapStorey[i]) {//当前图层名称不等于当前数组图层名称时
var mapStorey = map.getLayersByName(allMapStorey[i]);//利用当前数组图层名称找到当前数组名称图层
mapStorey[0].setVisibility(false);//隐藏当前数组名称图层
}
}
}
}
其中 map.getLayersByName(allMapStorey[i]) 解释为:
mapStorey[0].setVisibility(false) 解释为: