import type { BaseLayerOption } from "@/features/map/core/components/base-layers-control"; import type { MapLayerControlItem } from "@/features/map/core/components/layer-control"; import type { MapLegendItem } from "@/features/map/core/components/legend"; export const WORKBENCH_LAYER_GROUPS: Record = { pipes: ["pipes-casing", "pipes-flow", "pipes-risk-glow", "pipes-hover"], junctions: ["junctions-halo", "junctions", "junctions-hover"], simulation: [ "simulation-impact-fill", "simulation-impact-outline", "simulation-burst-halo", "simulation-burst-point", "simulation-pipe-label", "simulation-impact-label", "simulation-district-label", "simulation-burst-label" ] }; export const INITIAL_LAYER_VISIBILITY: Record = { pipes: true, junctions: true, simulation: false }; export const MAP_LEGEND_ITEMS: MapLegendItem[] = [ { id: "major-pipe", label: "DN600 及以上管线", color: "#0477bf", shape: "line" }, { id: "medium-pipe", label: "DN300-DN600 管线", color: "#0aa6a6", shape: "line" }, { id: "minor-pipe", label: "DN300 以下管线", color: "#3dbf7f", shape: "line" }, { id: "junction-demand", label: "节点需水强度", color: "#f25f5c", shape: "dot" }, { id: "impact-area", label: "影响范围", color: "#ef4444", shape: "square" } ]; export const BASE_LAYER_IDS = ["mapbox-light", "mapbox-satellite"] as const; export const BASE_LAYER_OPTIONS: BaseLayerOption[] = [ { id: "mapbox-light", label: "浅色", description: "道路底图", swatchClassName: "bg-gradient-to-br from-slate-50 via-slate-100 to-blue-100" }, { id: "mapbox-satellite", label: "影像", description: "卫星街道", swatchClassName: "bg-gradient-to-br from-emerald-950 via-emerald-700 to-yellow-200" }, { id: "none", label: "无底图", description: "仅业务图层", swatchClassName: "bg-slate-100" } ]; export function createLayerControlItems(layerVisibility: Record): MapLayerControlItem[] { return [ { id: "pipes", label: "管线", description: "主干、支线与风险高亮", visible: layerVisibility.pipes }, { id: "junctions", label: "节点", description: "用水节点与悬停反馈", visible: layerVisibility.junctions }, { id: "simulation", label: "模拟结果", description: "影响范围与事故标注", visible: layerVisibility.simulation } ]; }