feat: extend agent-driven map workbench

This commit is contained in:
2026-07-20 19:57:35 +08:00
parent 86e9b08235
commit 7fbd8a5618
63 changed files with 4506 additions and 457 deletions
+21 -4
View File
@@ -2,13 +2,14 @@ import type { ExpressionSpecification, Map as MapLibreMap, StyleSpecification }
import { MAP_STYLE_TOKENS } from "./map-colors";
export const SCADA_SOURCE_ID = "scada";
export const SCADA_SOURCE_LAYER = "scada_points";
export const SCADA_SOURCE_LAYER = "geo_scadas_mat";
export const SCADA_HIT_LAYER_ID = "scada-hit";
export const SCADA_ICON_PATHS = {
waterQuality: "/icons/scada-water-quality.svg",
radarLevel: "/icons/scada-radar-level.svg",
ultrasonicFlow: "/icons/scada-ultrasonic-flow.svg",
integratedMonitoring: "/icons/scada-integrated-monitoring.svg",
unknown: "/icons/scada-unknown.svg"
} as const;
@@ -16,6 +17,7 @@ export const SCADA_MAP_ICON_PATHS = {
waterQuality: "/icons/scada-water-quality.png",
radarLevel: "/icons/scada-radar-level.png",
ultrasonicFlow: "/icons/scada-ultrasonic-flow.png",
integratedMonitoring: "/icons/scada-integrated-monitoring.png",
unknown: "/icons/scada-unknown.png"
} as const;
@@ -23,19 +25,34 @@ export const SCADA_IMAGE_IDS = {
waterQuality: "scada-water-quality",
radarLevel: "scada-radar-level",
ultrasonicFlow: "scada-ultrasonic-flow",
integratedMonitoring: "scada-integrated-monitoring",
unknown: "scada-unknown"
} as const;
export const SCADA_ICON_EXPRESSION: ExpressionSpecification = [
const SCADA_KIND_ICON_EXPRESSION: ExpressionSpecification = [
"match", ["get", "kind"],
"water_quality", SCADA_IMAGE_IDS.waterQuality,
"radar_level", SCADA_IMAGE_IDS.radarLevel,
"ultrasonic_flow", SCADA_IMAGE_IDS.ultrasonicFlow,
SCADA_IMAGE_IDS.unknown
"integrated_monitoring", SCADA_IMAGE_IDS.integratedMonitoring,
"综合监测点", SCADA_IMAGE_IDS.integratedMonitoring,
SCADA_IMAGE_IDS.integratedMonitoring
];
export const SCADA_ICON_EXPRESSION: ExpressionSpecification = [
"case",
["has", "kind"],
SCADA_KIND_ICON_EXPRESSION,
SCADA_IMAGE_IDS.integratedMonitoring
];
const stateOpacity = (state: "hovered" | "selected"): ExpressionSpecification => [
"case", ["boolean", ["feature-state", state], false], 1, 0
"case",
state === "selected"
? ["any", ["boolean", ["feature-state", "selected"], false], ["boolean", ["feature-state", "highlighted"], false]]
: ["boolean", ["feature-state", state], false],
1,
0
];
const SCADA_ICON_SIZE = 0.75;