ArcGIS Maps SDK for JS 4.x中LayerList单选配置位置求助
解决ArcGIS LayerList单选可见性+图例显示问题
你之前配置的selectionEnabled和multipleSelectionEnabled是控制列表项的选中高亮状态,并非用来控制图层可见性的互斥逻辑,所以不会实现你要的单选显示效果。要达成「选中一个图层就自动关闭其他图层」的需求,需要手动监听事件并处理图层可见性,同时保留图例面板的配置。
正确实现代码
const layerList = new LayerList({ view: view, container: "legendDiv", listItemCreatedFunction: function(event) { const item = event.item; // 给非组图层添加图例面板 if (item.layer.type !== "group") { item.panel = { content: "legend", open: true }; } } }); // 监听LayerList的触发事件,处理单选逻辑 layerList.on("trigger-action", function(event) { // 只处理图层可见性切换的动作 if (event.action.id === "toggle-visibility") { const targetLayer = event.item.layer; // 如果目标图层要被设为可见,关闭其他所有非组图层的可见性 if (!targetLayer.visible) { view.map.layers.forEach(layer => { if (layer.type !== "group" && layer !== targetLayer) { layer.visible = false; } }); } } });
补充说明
- 这段代码会在用户开启某一个非组图层时,自动关闭所有其他非组图层的可见性,实现单选效果。
- 图例面板的配置保留了你原来的逻辑,每个非组图层都会展开显示图例。
- 如果你的地图里包含图层组,代码会自动跳过组图层,只处理单个图层的可见性。
内容的提问来源于stack exchange,提问作者GWORV_TH
相关产品推荐
相关产品推荐

