UNPKG

gisviewer-vue3-arcgis

Version:

在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:

123 lines (122 loc) 4.18 kB
import { default as OlMap } from 'ol/Map'; import { IHighlightSignalControlAreaParams, IResult, IShowSignalSystemParams, IShowSubSignalSystemParams } from 'packages/components/src/types'; /** * 信号系统控制器 * 用于在 OpenLayers 地图上展示和管理信号子区系统 * 包括子区道路线(LineString)和路口节点(Point)的渲染 */ export default class SignalSystemController { /** OpenLayers 地图实例 */ private map; /** 矢量数据源,存储所有信号系统要素 */ private source; /** 信号系统图层 */ private signalSystemLayer; /** 存储子系统数据,用于 zoom 变化时重新渲染 */ private subSystemDataMap; /** zoom 变化监听器引用,用于移除监听 */ private zoomChangeListener; private grayLineStyle; private grayPointStyle; /** 当前高亮状态,用于在重新渲染时判断是否应该隐藏 feature */ private highlightState; /** * 构造函数 * @param map - OpenLayers 地图实例 */ constructor(map: OlMap); private mapClick; /** * 设置 zoom 变化监听器 */ private setupZoomListener; /** * 判断 zoom 是否跨越了指定阈值 * @param oldZoom - 旧的 zoom 值 * @param newZoom - 新的 zoom 值 * @param threshold - 阈值 * @returns 是否跨越阈值 */ private hasCrossedThreshold; /** * 重新渲染所有已存储的子系统 */ private reRenderAllSubSystems; /** * 计算点集的重心坐标 * @param points - 点坐标数组 [{x, y}, ...] * @returns 重心坐标 [x, y] */ private calculateCentroid; /** 根据区控和子区编码查找子区 */ private findSubSystem; /** 聚焦子区:优先保证可见所有路口 */ private focusSubSystem; /** 计算子区路口范围,确保地图能看到所有路口 */ private getSubSystemCrossExtent; /** 根据子区数据计算中心点 */ private getSubSystemCenter; showSignalSystem(params: IShowSignalSystemParams): Promise<IResult> | { status: number; message: string; }; removeSignalSystem(areaCode?: string): void; private showSystem; /** * 展示多个信号子区系统 * 遍历所有子区并渲染,完成后自动缩放地图视角以显示所有子区 * * @param params - 展示参数,包含子区列表 * @returns 操作结果 */ showSubSignalSystem(params: IShowSubSignalSystemParams): Promise<IResult>; /** * 移除信号子区系统 * 若不传 subCode,则清除所有子区;否则只清除指定子区 * * @param subCode - 可选,子区编码。不传则清除全部 */ removeSubSignalSystem(subCode?: string): void; highlight(params: IHighlightSignalControlAreaParams): IResult; resetHighlight(): void; /** * 渲染单个信号子区系统 * 包括子区道路线和路口节点的渲染 * * @param subSystem - 信号子区系统数据 * @param areaCode - 区域编码,用于关联要素 */ private showSubSystem; /** * 根据当前 zoom 级别渲染子系统 * zoom <= 13: 显示重心图标(不显示道路和路口) * zoom >= 14: 显示 subShape 和 children * * @param subSystem - 子区系统数据 * @param areaCode - 区控编码 */ private renderSubSystem; /** * 渲染子系统重心图标 * @param subSystem - 信号子区系统数据 * @param areaCode - 区域编码 */ private renderCentroidIcon; /** * 渲染子系统详细信息(道路线和节点) * @param subSystem - 信号子区系统数据 * @param areaCode - 区域编码 */ private renderSubSystemDetail; /** * 根据缩放层级获取路口节点样式 * 14 <= zoom < 17: 显示蓝色圆点 * zoom >= 17: 显示传入参数配置的 symbol * * @param symbol - 节点符号配置 * @param node - 节点数据 * @param zoom - 当前缩放层级 * @returns 样式对象 */ private getNodeStyleByZoom; }