fix: hide unavailable GeoServer layers

This commit is contained in:
2026-09-11 16:40:24 +08:00
parent f9c71cc076
commit cf699d6207
15 changed files with 683 additions and 60 deletions
+27 -5
View File
@@ -156,6 +156,9 @@ export function MapWorkbenchPage({
const handleSelectFeature = useCallback((feature: DetailFeature) => {
setDetailFeature(feature);
}, []);
const handleClearSelection = useCallback(() => {
setDetailFeature(null);
}, []);
const agent = useWorkbenchAgent({
onUiEnvelope: handleAgentUiEnvelope,
@@ -259,9 +262,20 @@ export function MapWorkbenchPage({
});
}
const { mapRef, mapReady, mapError, sourceStatuses, fitNetworkBounds, getScadaFeatures } = useWorkbenchMap({
const {
mapRef,
mapReady,
mapError,
sourceStatuses,
availableSourceIds,
fitNetworkBounds,
getScadaFeatures,
refreshGeoServerLayers
} = useWorkbenchMap({
containerRef: mapContainerRef,
impactVisible,
layerVisibility,
onClearSelection: handleClearSelection,
onSelectFeature: handleSelectFeature,
selectedFeature: detailFeature,
getAccessToken
@@ -273,7 +287,8 @@ export function MapWorkbenchPage({
rightPanelOpen,
conditionPanelExpanded: rightPanelExpanded,
agentPanelWidth,
getScadaFeatures
getScadaFeatures,
availableSourceIds
});
const activeAgentUiResults = useMemo(
@@ -426,8 +441,8 @@ export function MapWorkbenchPage({
);
const layerControlItems = useMemo(
() => createLayerControlItems(layerVisibility),
[layerVisibility]
() => createLayerControlItems(layerVisibility, availableSourceIds),
[availableSourceIds, layerVisibility]
);
function handleToggleLayer(layerControlId: string, visible: boolean) {
const map = mapRef.current;
@@ -492,8 +507,15 @@ export function MapWorkbenchPage({
return;
}
if (!refreshGeoServerLayers()) {
showMapNotice({ tone: "warning", message: "业务图层正在检查,请稍候。" });
return;
}
map.triggerRepaint();
showMapNotice({ tone: "success", message: "已请求地图重新渲染,业务瓦片将在视图变化时刷新。" });
showMapNotice({
tone: "success",
message: "已开始重新检查业务图层,并请求地图重新渲染。"
});
}
function handleShowDataStatus() {