更新 deckLayer 类

This commit is contained in:
JIANG
2025-11-24 15:09:37 +08:00
parent 15e80f105e
commit b4aef962dd
5 changed files with 309 additions and 227 deletions
+14 -5
View File
@@ -40,7 +40,7 @@ const LayerControl: React.FC = () => {
return deckLayers.some((dl: any) => dl.id === "waterflowLayer");
}
return false;
}) as Layer[];
}) as DeckLayer[];
// 合并所有可控制的图层
const allLayers = [...mapLayers, ...deckFlowLayers];
@@ -55,6 +55,7 @@ const LayerControl: React.FC = () => {
"valves",
"scada",
"waterflow",
"contourLayer",
];
// 过滤并排序图层:只显示在 layerOrder 中的图层
@@ -81,10 +82,18 @@ const LayerControl: React.FC = () => {
if (userChangedRef.current.has(layer)) {
visible.set(layer, prevVisibilities.get(layer) ?? true);
} else if (layer instanceof DeckLayer) {
// 对于 DeckLayer获取内部 deck.gl 图层的可见性
const waterflowVisible =
layer.getDeckLayerVisible("waterflowLayer");
visible.set(layer, waterflowVisible ?? true);
// 对于 DeckLayer需要设置内部 deck.gl 图层的可见性
const deckLayers = layer.getDeckLayers();
deckLayers.forEach((deckLayer: any) => {
if (
deckLayer &&
(deckLayer.id === "waterflowLayer" ||
deckLayer.id === "contourLayer")
) {
const visible = layer.getDeckLayerVisible(deckLayer.id);
layer.setDeckLayerVisible(deckLayer.id, !visible);
}
});
} else {
// 对于普通 OpenLayers 图层
visible.set(layer, layer.getVisible());