gisviewer-vue3-arcgis
Version:
在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:
123 lines (122 loc) • 4.18 kB
TypeScript
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;
}