@teeechina/teee-map 0.0.36 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1388 @@
1
+ import * as maplibregl from 'maplibre-gl';
2
+ import { SourceSpecification, LayerSpecification, Map as Map$1 } from 'maplibre-gl';
3
+
4
+ type LayerType = 'background' | 'signal' | 'track' | 'track_circuit' | 'bumper' | 'switch' | 'switch_loc' | 'insulation' | 'label' | 'prevention' | 'sgfhqy' | 'region' | 'display_polygon' | 'display_line' | 'display_point';
5
+ type RegionLayerType = 'background' | 'track' | 'bridge' | 'tunnel' | 'region_signal' | 'curve' | 'floodcontrol' | 'ramp' | 'contactseparation' | 'callpost';
6
+ interface MapForgeConfig {
7
+ id: string;
8
+ sourceUrl?: string;
9
+ subSourceId?: string;
10
+ subSourceUrl?: string;
11
+ layers?: (LayerType | RegionLayerType)[];
12
+ sourceLayers?: string[];
13
+ type?: 'region' | 'station';
14
+ zoom?: number;
15
+ }
16
+ interface MapParams {
17
+ id: string;
18
+ source: SourceSpecification | SourceSpecification[];
19
+ subSourceId?: string;
20
+ subSource?: SourceSpecification;
21
+ layers?: LayerSpecification[];
22
+ subLayers?: LayerSpecification[];
23
+ }
24
+ interface IconType {
25
+ id: string;
26
+ image: HTMLImageElement;
27
+ }
28
+
29
+ interface InterlockItem {
30
+ name: string;
31
+ state: string;
32
+ }
33
+ interface InterlockData {
34
+ signalInterlock: InterlockItem[];
35
+ switchInterlock: InterlockItem[];
36
+ circuitInterlock: InterlockItem[];
37
+ }
38
+ /**
39
+ * 信号联锁协议解析器。
40
+ * 解析格式:时间&站码[&厂家信息]&信号机&道岔&区段
41
+ */
42
+ declare class InterlockProtocol {
43
+ signalExist: boolean;
44
+ productInfo?: string;
45
+ stationCode?: string;
46
+ time?: string;
47
+ private interlockInfo;
48
+ getProductInfo(): string | undefined;
49
+ getStCode(): string | undefined;
50
+ getInterlockInfo(): Map<string, InterlockData>;
51
+ isSignalExist(): boolean;
52
+ setYardSignal(signal: string): void;
53
+ reset(): void;
54
+ resetInterlockInfo(): void;
55
+ }
56
+
57
+ interface InsulationSignals {
58
+ upsignal: string | null;
59
+ downsignal: string | null;
60
+ }
61
+ /**
62
+ * 绝缘节与信号机双向映射管理器。
63
+ * 维护 绝缘节→信号机 和 信号机→绝缘节 两张 Map。
64
+ */
65
+ declare class InterLockInsulation {
66
+ /** Map<绝缘节 id, { upsignal, downsignal }> */
67
+ private insulationSignalMap;
68
+ /** Map<信号机 id, 绝缘节 id-name> */
69
+ private signalInsulationMap;
70
+ /**
71
+ * 从 maplibre-gl querySourceFeatures 返回的要素数组初始化映射。
72
+ * @param features 绝缘节图层要素列表
73
+ */
74
+ setInsulation(features: maplibregl.GeoJSONFeature[]): void;
75
+ /** 通过信号机 key 查找对应绝缘节 id-name */
76
+ getInsulationBySignalKey(signalKey: string): string | undefined;
77
+ /** 通过绝缘节 id 查找对应信号机 { upsignal, downsignal } */
78
+ getSignalByInsulationKey(insulationKey: string): InsulationSignals | undefined;
79
+ }
80
+
81
+ interface InterlockVisualizationOptions {
82
+ sourceIds?: Record<string, Record<string, string>>;
83
+ firstSwitches?: string[];
84
+ updateFeatureState: (code: string | number, state: FeatureState) => void;
85
+ queryGeojsonFeatures: (key: string) => maplibregl.GeoJSONFeature[];
86
+ getFeatureState: (code: string | number) => Record<string, unknown>;
87
+ }
88
+ interface FeatureState {
89
+ [key: string]: unknown;
90
+ state?: string | number;
91
+ visiable?: boolean;
92
+ select?: boolean;
93
+ link?: number | undefined;
94
+ controlName?: string;
95
+ }
96
+ declare class InterLockVisualization {
97
+ private layers;
98
+ private firstSwitches;
99
+ private updateFeatureState;
100
+ private queryGeojsonFeatures;
101
+ private getFeatureState;
102
+ private signalStore;
103
+ private interLockInsulation;
104
+ /** 当前帧所有联锁状态缓存(信号机/道岔/区段) */
105
+ private interLockState;
106
+ /** YD 协议计算白光带时使用的临时数组 */
107
+ private pathCircuits;
108
+ private pathCircuitsCodes;
109
+ private linkWhiteCircuits;
110
+ /** 控制信号发送 */
111
+ private signalEnable;
112
+ private onSendSignal?;
113
+ private stationSignalState;
114
+ private filterCodes;
115
+ constructor(options: InterlockVisualizationOptions);
116
+ /** 查询指定 source 的所有要素 */
117
+ private queryFeatures;
118
+ /** 初始化绝缘节映射 */
119
+ initInsulation(): void;
120
+ /**
121
+ * 处理一帧信号数据字符串。
122
+ * @param res 原始信号字符串,格式:时间&站码[&厂家信息]&信号机&道岔&区段
123
+ */
124
+ handleSignalData(res: string): void;
125
+ turnOffSignals(): void;
126
+ private reset;
127
+ private clearCircuits;
128
+ private clearSwitchLocs;
129
+ /**
130
+ * ZK01 协议可视化(直接设置状态)
131
+ * @param interlocks InterlockData
132
+ * @param yardProduct string
133
+ * @param yardCode string
134
+ */
135
+ private visualizeZK;
136
+ /**
137
+ * YD 协议可视化(需计算白光带)
138
+ * @param interlocks InterlockData
139
+ * @param yardProduct string
140
+ * @param yardCode string
141
+ */
142
+ private visualizeYD;
143
+ private applyHandSwitchPaths;
144
+ private findHandSwitchPath;
145
+ private doseTrackConnectSwitch;
146
+ private getCircuitState;
147
+ private findNextCircuit;
148
+ private getInsulationSignalState;
149
+ private getControlSignalState;
150
+ private getSignalFeature;
151
+ private getSignalById;
152
+ private getSwitchLocFeatures;
153
+ private getSwitchFeatures;
154
+ private getSwitchByCode;
155
+ private getTrackByCode;
156
+ private getCircuitFeature;
157
+ private getSwitchNameByCode;
158
+ private findSwitchInfo;
159
+ private validSwitchInfo;
160
+ private arrToMap;
161
+ startRunning(): void;
162
+ stopRunning(): void;
163
+ /** 设置信号发送回调,回调参数格式与 JS 版 commitManualSignal 一致 */
164
+ setSendSignalCallback(callback: (dataList: string[]) => void): void;
165
+ setStationSignalState(stationSignalState: string[], filterCodes?: string[]): void;
166
+ /**
167
+ * 将当前 interLockState 中的信号机/道岔/区段状态按协议格式组装并通过回调发送。
168
+ * 格式:utc&站码&信号机段&道岔段&区段段
169
+ */
170
+ sendSignal(): void;
171
+ /** 暂停信号:将所有缓存状态清零后发送一次清空帧 */
172
+ pauseSignal(): void;
173
+ /**
174
+ * 读取当前 MapLibre 图层 feature state 直接生成信号字符串并发送,不依赖 interLockState 缓存。
175
+ * 适用于手动修改图层状态后需要立即发送的场景。
176
+ */
177
+ collectStateAndSend(): void;
178
+ /**
179
+ * 读取当前 MapLibre 图层 feature state 直接生成信号字符串
180
+ */
181
+ collectState(): string[];
182
+ }
183
+
184
+ /**
185
+ * 地图测量工具(距离 + 面积)
186
+ *
187
+ * 使用方式:
188
+ * const measureTool = new MeasureTool(map);
189
+ * measureTool.startDistance(); // 开始距离测量
190
+ * measureTool.startArea(); // 开始面积测量
191
+ * measureTool.clear(); // 清除所有测量内容
192
+ */
193
+ declare class MeasureTool {
194
+ private static stylesInjected;
195
+ private map;
196
+ private active;
197
+ private jsonPoint;
198
+ private jsonLine;
199
+ private points;
200
+ private tooltip;
201
+ private markers;
202
+ private tooltipEle;
203
+ /** 存储当前绑定的事件处理函数引用,用于 map.off 解绑 */
204
+ private _onClick;
205
+ private _onMousemove;
206
+ private _onContextmenu;
207
+ constructor(map: maplibregl.Map);
208
+ /** 注入测量标签样式 */
209
+ private static injectStyles;
210
+ /** 获取 GeoJSON 数据源,带类型断言 */
211
+ private getSource;
212
+ /** 开始距离测量模式 */
213
+ startDistance(): void;
214
+ private bindDistanceEvents;
215
+ private addDistancePoint;
216
+ private addMeasureRes;
217
+ private getLength;
218
+ /** 开始面积测量模式 */
219
+ startArea(): void;
220
+ private bindAreaEvents;
221
+ private addAreaPoint;
222
+ private getArea;
223
+ /** 重置内部状态,解绑事件监听 */
224
+ private reset;
225
+ /** 清除所有测量图层、数据源和 DOM 元素 */
226
+ clear(): void;
227
+ }
228
+
229
+ /** stashFeatures Map 中存储的要素状态条目 */
230
+ interface StashEntry {
231
+ sourceLayer: string;
232
+ [key: string]: unknown;
233
+ }
234
+ /**
235
+ * 太昌业务地图 SDK 主类。
236
+ * 基于 maplibre-gl 封装,提供一键式地图初始化、图层管理、要素状态控制、加密瓦片及离线包支持。
237
+ */
238
+ declare class TeeeMap {
239
+ /** 底层 maplibre-gl Map 实例 */
240
+ map: Map$1;
241
+ /** 地图方向 */
242
+ mapDir: 'left' | 'right';
243
+ /** 当前地图的构建参数(由 MapForge 生成) */
244
+ mapConfigs: MapForgeConfig;
245
+ mixingMapConfigs: Map<string, MapForgeConfig>;
246
+ /** 要素缓存池:key 为要素 code,value 为 { sourceLayer, ...state } */
247
+ stashFeatures: Map<string | number, StashEntry>;
248
+ /** 测量工具(initMap / initMixMap 时挂载) */
249
+ measureTool?: MeasureTool;
250
+ /** 联锁可视化实例(createGraphMap / create*GeoJson*Map 时挂载,可能为 undefined) */
251
+ interLockVisualization: InterLockVisualization | undefined;
252
+ /** 拉取指定范围所有瓦片的全部要素并加入缓存(baseTool 挂载) */
253
+ fetchAllTiles: (zoom?: number) => Promise<void>;
254
+ /** 添加 GeoJSON 数据源(baseTool 挂载) */
255
+ addGeoJsonSource: (id: string, data?: GeoJSON.GeoJSON) => void;
256
+ /** 添加矢量瓦片数据源(baseTool 挂载) */
257
+ addVectorTileSource: (id: string, url: string) => void;
258
+ /** 添加栅格瓦片数据源(baseTool 挂载) */
259
+ addRasterTileSource: (id: string, url: string) => void;
260
+ /** 更新 GeoJSON 数据源内容(baseTool 挂载) */
261
+ updateGeoJsonSource: (id: string, data: GeoJSON.GeoJSON) => void;
262
+ /** 获取 GeoJSON 源当前数据(baseTool 挂载) */
263
+ getGeoJsonSourceData: (id: string) => GeoJSON.FeatureCollection | null;
264
+ /** 移除指定数据源(baseTool 挂载) */
265
+ removeSource: (id: string) => void;
266
+ /** 添加 GeoJSON 图层(baseTool 挂载) */
267
+ addGeoJsonLayer: (layerId: string, sourceId: string, type?: 'fill' | 'line' | 'circle' | 'symbol', paint?: Record<string, unknown>, layout?: Record<string, unknown>) => void;
268
+ /** 动态更新图层 paint 样式(baseTool 挂载) */
269
+ updateLayerStyle: (layerId: string, paint: Record<string, unknown>) => void;
270
+ /** 移除指定图层(baseTool 挂载) */
271
+ removeLayer: (layerId: string) => void;
272
+ /** 为指定图层绑定要素点击事件(baseTool 挂载) */
273
+ onFeatureClick: (layerIds: string | string[], callback: (feature: maplibregl.MapGeoJSONFeature, lngLat: maplibregl.LngLat) => void) => void;
274
+ /** 为指定要素初始化业务状态(graphLayerTool 挂载) */
275
+ initGraphFeatureState?: (f: maplibregl.GeoJSONFeature) => void;
276
+ /** 为指定要素初始化 GeoJSON 图层业务状态(geojsonLayerTool 挂载) */
277
+ initGeoJsonFeatureState?: (f: maplibregl.GeoJSONFeature, layerType: string) => void;
278
+ /** 初始化全部 GeoJSON 图层业务状态(geojsonLayerTool 挂载) */
279
+ initGeoJsonState?: () => void;
280
+ /** 初始化混合地图 GeoJSON 图层业务状态(geojsonLayerTool 挂载) */
281
+ initMixGeoJsonMapState?: () => void;
282
+ /** GeoJSON 图层要素缓存:key 为图层名,value 为该图层所有 GeoJSONFeature */
283
+ private layerFeaturesCache;
284
+ /** 当前活跃的闪烁动画清理函数,新的闪烁触发前自动清除旧的,确保新要素能正常闪烁 */
285
+ private _activeBlinkCleanup;
286
+ /**
287
+ * 要素缓存(stashFeatures)就绪信号。
288
+ * 每次 initMap / initMixMap 开始构建时重建,stash 完成后 resolve。
289
+ * 调用方通过 whenStashed() 等待,避免在缓存为空时调用 initGeoJsonState 而静默失效。
290
+ */
291
+ private _stashReady;
292
+ private _stashReadyResolve;
293
+ private _stashReadyReject;
294
+ /**
295
+ * 创建 TeeeMap 实例。
296
+ * @param container - 地图容器 DOM 元素或其 ID
297
+ */
298
+ constructor(container: string | HTMLElement);
299
+ /**
300
+ * 获取底层 maplibre-gl Map 实例。
301
+ * @returns maplibre Map 实例
302
+ */
303
+ getMap(): Map$1;
304
+ /**
305
+ * 获取当前地图的配置对象。
306
+ * @returns MapForgeConfig
307
+ */
308
+ getMapConfigs(): MapForgeConfig;
309
+ /**
310
+ * 销毁地图实例并释放所有资源。
311
+ * 清理闪烁动画、事件监听、内部缓存及底层 maplibre-gl Map 实例。
312
+ */
313
+ destroy(): void;
314
+ /**
315
+ * 重置要素缓存就绪信号。必须在每次地图构建的同步段调用,
316
+ * 保证调用方拿到的 whenStashed() 对应的是本轮构建。
317
+ */
318
+ private resetStashReady;
319
+ /** 标记要素缓存已就绪,唤醒所有 whenStashed() 等待方。 */
320
+ private markStashReady;
321
+ /**
322
+ * 使当前的要素缓存就绪信号失败,并唤醒所有 whenStashed() 等待方(以 reject 结束)。
323
+ * 地图实例被销毁(destroy)时调用,避免等待方永久挂起。
324
+ */
325
+ invalidateStashReady(reason?: string): void;
326
+ /**
327
+ * 等待要素缓存(stashFeatures)就绪。
328
+ *
329
+ * 地图构建是异步的:source/layer 注册 → 首次 idle → stashAllFeature 填充缓存。
330
+ * 在缓存就绪前调用 initGeoJsonState / initMixGeoJsonMapState 会因遍历空 Map 而
331
+ * 静默失效(不报错、不生效),因此调用方应先 await 本方法。
332
+ *
333
+ * @param timeout - 超时毫秒数,默认 30000。超时后 reject,避免调用方永久挂起;传 0 表示不限时。
334
+ * @returns 缓存就绪时 resolve;超时或地图被销毁时 reject
335
+ */
336
+ whenStashed(timeout?: number): Promise<void>;
337
+ /**
338
+ * 注册要素缓存就绪回调(事件风格 API,内部等价于 whenStashed().then(cb))。
339
+ * 多次注册都会在缓存就绪后执行;缓存已就绪时注册会立即(微任务)执行。
340
+ * @param cb - 缓存就绪后执行的回调
341
+ * @param onError - 等待失败(超时/地图销毁)或回调执行抛错时的处理函数,缺省时打印错误日志
342
+ */
343
+ onStashReady(cb: () => void, onError?: (err: unknown) => void): void;
344
+ /**
345
+ * 核心地图构建方法。
346
+ * 注册主源、附源、图标及图层,并在首次 idle 后自动缓存要素。
347
+ * @param mapParams - 地图初始化参数(源、图层、ID 等)
348
+ * @param mixingMap - 是否是同时加载区间与站场
349
+ */
350
+ initMap(mapParams: MapParams, mixingMap?: boolean): void;
351
+ /**
352
+ * 创建混合地图(区间 + 站场)。
353
+ * @param mapParams 地图初始化参数(源、图层、ID 等)
354
+ */
355
+ initMixMap(mapParams: MapParams[]): void;
356
+ /**
357
+ * 创建人员定位图(RSWP)。
358
+ * 由影像栅格底图 + GeoJSON 附源构成,用于人员/机车定位场景。
359
+ * @param url - 栅格影像瓦片地址
360
+ */
361
+ createRSWPMap(url: string): void;
362
+ /**
363
+ * 创建普通站场平面图(Graph)。
364
+ * @param stcode - 车站编码
365
+ * @param url - 矢量瓦片服务地址
366
+ * @param layers - 需要加载的图层类型列表
367
+ */
368
+ createGraphMap(stcode: string, url: string, layers: LayerType[]): void;
369
+ createSscsGraphMap(url: string): void;
370
+ /**
371
+ * 设置 sscs 点要素的业务状态(与 createSscsGraphMap 配套使用)。
372
+ * @param code - 要素code(即瓦片 promoteId 对应属性 code 的值)
373
+ * @param state - 业务状态,需包含在 createSscsGraphMap 传入的 pointStateStyles 中,否则回退默认色
374
+ */
375
+ setSscsPointState(code: string | number, state: string): void;
376
+ /**
377
+ * 创建地理图(Geom)。
378
+ * @param stcode - 车站编码
379
+ * @param url - 矢量瓦片服务地址
380
+ * @param layers - 需要加载的图层类型列表
381
+ */
382
+ createGeomMap(stcode: string, url: string, layers: LayerType[]): void;
383
+ /**
384
+ * 创建加密地理图。
385
+ * 自动注入瓦片解密转换器,其余逻辑同 createGeomMap。
386
+ * @param stcode - 车站编码
387
+ * @param url - 加密矢量瓦片服务地址
388
+ * @param layers - 需要加载的图层类型列表
389
+ */
390
+ createGeomEncryptedMap(stcode: string, url: string, layers: LayerType[]): void;
391
+ /**
392
+ * 创建 GeoJSON 站场地理图。
393
+ * 每个图层类型对应一个独立的 GeoJSON source,数据通过 URL 数组传入。
394
+ * @param stationDatas - 需要加载的图层类型与geojson数据列表
395
+ * @param showImage - 是否加载高德影像底图
396
+ */
397
+ createGeoJsonGeomStationMap(stationDatas: {
398
+ name: string;
399
+ data: GeoJSON.FeatureCollection | string;
400
+ }[], showImage?: boolean): Promise<void>;
401
+ /**
402
+ * 创建geojson数据来源的站场区间平面地图
403
+ * @param mapDatas
404
+ * @returns
405
+ */
406
+ createMixGeoJsonGeomMap(mapDatas: {
407
+ code: string;
408
+ type: 'region' | 'station';
409
+ geojsonData: {
410
+ name: string;
411
+ data: GeoJSON.FeatureCollection | string;
412
+ }[];
413
+ }[], showImage?: boolean): Promise<void>;
414
+ /**
415
+ * 创建 GeoJSON 站场平面图。
416
+ * 每个图层类型对应一个独立的 GeoJSON source,数据通过 URL 数组传入。
417
+ * @param stationDatas - 需要加载的图层类型与geojson数据列表
418
+ */
419
+ createGeoJsonStationMap(stationDatas: {
420
+ name: string;
421
+ data: GeoJSON.FeatureCollection | string;
422
+ }[]): Promise<void>;
423
+ /**
424
+ * 创建 GeoJson 区间平面图
425
+ * @param regionCode 区间code
426
+ * @param regionDatas 区间数据
427
+ */
428
+ createGeoJsonRegionMap(regionCode: string, regionDatas: {
429
+ name: string;
430
+ data: GeoJSON.FeatureCollection | string;
431
+ }[]): Promise<void>;
432
+ /**
433
+ * 创建geojson数据来源的站场区间平面地图
434
+ * @param mapDatas
435
+ * @returns
436
+ */
437
+ createMixGeoJsonMap(mapDatas: {
438
+ code: string;
439
+ type: 'region' | 'station';
440
+ geojsonData: {
441
+ name: string;
442
+ data: GeoJSON.FeatureCollection | string;
443
+ }[];
444
+ deltaInfo?: {
445
+ deltax: number;
446
+ deltay: number;
447
+ };
448
+ }[]): Promise<void>;
449
+ /**
450
+ * 创建影像图 / 栅格底图。
451
+ * @param url - 栅格瓦片服务地址
452
+ */
453
+ createRasterMap(url: string): void;
454
+ /**
455
+ * 创建加密栅格地图。
456
+ * 自动注入瓦片解密转换器。
457
+ * @param url - 加密栅格瓦片服务地址
458
+ */
459
+ createEncryptedRasterMap(url: string): void;
460
+ /**
461
+ * 缓存当前视口内的全部要素信息。
462
+ * key 为要素 properties.code,value 包含 sourceLayer 及后续状态。
463
+ * 地图首次 idle 后自动执行,也可手动调用刷新缓存。
464
+ */
465
+ stashMixMapAllFeature(): Promise<void>;
466
+ /**
467
+ * 缓存当前视口内的全部要素信息。
468
+ * key 为要素 properties.code,value 包含 sourceLayer 及后续状态。
469
+ * 地图首次 idle 后自动执行,也可手动调用刷新缓存。
470
+ */
471
+ stashAllFeature(): Promise<void>;
472
+ /**
473
+ * 更新指定要素的业务状态。
474
+ * 状态会合并到 stashFeatures 缓存中,并同步调用 map.setFeatureState。
475
+ * 同时兼容矢量瓦片源(带 sourceLayer)和 GeoJSON 源(sourceLayer 即为 sourceId)。
476
+ * @param code - 要素唯一编码
477
+ * @param state - 状态对象(如 { state: '1', select: true })
478
+ */
479
+ updateFeatureState(code: string | number, state: Record<string, unknown>): void;
480
+ /**
481
+ * 根据要素编码获取要素当前状态。
482
+ * @param code 要素编码
483
+ * @returns
484
+ */
485
+ getFeatureState(code: string | number): StashEntry | undefined;
486
+ /**
487
+ * 定位 geojson 数据
488
+ * @param data GeoJSON FeatureCollection
489
+ */
490
+ locateGeojsonFeature(data: GeoJSON.FeatureCollection, transform?: boolean): void;
491
+ /**
492
+ * 查询 geojson 图层所有 feature 要素
493
+ * @param key 图层名称
494
+ * @returns geojson 图层所有 feature 要素
495
+ */
496
+ queryGeojsonFeatures(key: string): maplibregl.GeoJSONFeature[];
497
+ /**
498
+ * 根据要素编码获取要素 feature
499
+ * @param circuitCodes 电路区段要素 codes
500
+ * @returns 电路区段要素
501
+ */
502
+ getTrackCircuitFeaturesByCodes(circuitCodes: string[]): maplibregl.GeoJSONFeature[];
503
+ /**
504
+ * 根据要素编码获取要素 feature
505
+ * @param code 要素 code
506
+ * @param layerType 图层类型
507
+ * @returns 要素 feature
508
+ */
509
+ getGeojsonLayerFeaturesByCode(code: string, layerType: LayerType): maplibregl.GeoJSONFeature | undefined;
510
+ /**
511
+ * 根据要素编码与图层类型将地图缩放至该要素位置。
512
+ * 内部复用 getGeojsonLayerFeaturesByCode 获取要素后,通过 bbox + fitBounds 定位。
513
+ * @param code - 要素 code
514
+ * @param layerType - 图层类型
515
+ */
516
+ locateFeatureByCode(code: string, layerType: LayerType): void;
517
+ /**
518
+ * 要素平滑闪烁高亮。
519
+ * 在指定 source 上添加临时图层,通过正弦动画实现周期性显隐效果,动画结束后自动清理。
520
+ * - featureType='line':添加 fill + line-outline 双图层,交替透明度与描边宽度
521
+ * - featureType='point':添加 symbol 图层,通过 canvas 动态生成圆形图标,交替 icon-opacity
522
+ * 返回清理函数,可用于提前终止动画并移除临时图层。
523
+ * @param sourceId - 数据源 ID
524
+ * @param featureFilter - 要素筛选条件(maplibre-gl filter 表达式)
525
+ * @param featureType - 要素类型,'line' 使用填充+描边闪烁,'point' 使用图标闪烁
526
+ * @param options - 动画参数(duration/blinkSpeed/baseColor/minAlpha/maxAlpha 等)
527
+ * @returns 清理函数,调用后可提前终止闪烁并移除临时图层
528
+ */
529
+ smoothBlinkFeature(code: string, layerType: LayerType, options?: {
530
+ /** 总动画时长(ms),默认 3000 */
531
+ duration?: number;
532
+ /** 闪烁周期(ms),默认 500 */
533
+ blinkSpeed?: number;
534
+ /** RGB 颜色三元组,默认 [0, 255, 0] */
535
+ baseColor?: [number, number, number];
536
+ /** 最小透明度,默认 0.3 */
537
+ minAlpha?: number;
538
+ /** 最大透明度,默认 0.7 */
539
+ maxAlpha?: number;
540
+ /** 描边基础宽度,默认 3 */
541
+ strokeWidthBase?: number;
542
+ /** 描边宽度变化范围,默认 2 */
543
+ strokeWidthRange?: number;
544
+ }): (() => void) | undefined;
545
+ }
546
+
547
+ /**
548
+ * 站场要素代码定义
549
+ * 是地图数据库内部定义,与防控类型不完全相同,且存在部分独有的类型定义如display图层相关的仅显示要素
550
+ */
551
+ declare enum StationFeatureCodeEnums {
552
+ /**
553
+ * 股道
554
+ */
555
+ TRACK = 1,
556
+ /**
557
+ * 道岔
558
+ */
559
+ SWITCH = 2,
560
+ /**
561
+ * 信号机
562
+ */
563
+ SIGNAL = 3,
564
+ /**
565
+ * 土挡
566
+ */
567
+ BUMPER = 4,
568
+ /**
569
+ * 警冲标
570
+ */
571
+ FOULINGPOST = 5,
572
+ /**
573
+ * 接触网终点
574
+ */
575
+ CONTACTLINEEND = 6,
576
+ /**
577
+ * 道口
578
+ */
579
+ RAILWAYCROSS = 7,
580
+ /**
581
+ * 道岔连接部件
582
+ */
583
+ SWITCHCONNECTINGCOMPONENTS = 11,
584
+ /**
585
+ * 轨道电路区段
586
+ */
587
+ TRACKCIRCUIT = 12,
588
+ /**
589
+ * 区间股道元素
590
+ */
591
+ Intervaltrackelements = 20,
592
+ /**
593
+ * 区间股道
594
+ */
595
+ Intervaltrack = 21,
596
+ /**
597
+ * 桥梁
598
+ */
599
+ BRIDGE = 22,
600
+ /**
601
+ * 隧道
602
+ */
603
+ TUNNEL = 29,
604
+ /**
605
+ * 出库点
606
+ */
607
+ OUTBOUND = 34,
608
+ /**
609
+ * 隔离开关
610
+ */
611
+ ISOLATE = 35,
612
+ /**
613
+ * 存车股道
614
+ */
615
+ PARKTRACK = 36,
616
+ /**
617
+ * 按钮
618
+ */
619
+ BUTTON = 37,
620
+ /**
621
+ * 预告无网区
622
+ */
623
+ PREVIEWNOWIRE = 42,
624
+ /**
625
+ * 脱轨器(上脱)
626
+ */
627
+ TGQ_UP = 47,
628
+ /**
629
+ * 脱轨器(下脱)
630
+ */
631
+ TGQ_DOWN = 48,
632
+ /**
633
+ * 无电(通过隔离开关或手动选择线段)
634
+ */
635
+ NOELECTRICITY = 49,
636
+ /**
637
+ * 站界
638
+ */
639
+ STATIONBOUND = 51,
640
+ /**
641
+ * 绝缘节
642
+ */
643
+ INSULATION = 52,
644
+ /**
645
+ * 脱轨器
646
+ */
647
+ DERAILING_STOP = 53,
648
+ /**
649
+ * 接触网禁停区
650
+ */
651
+ CONTACTLINENOPARK = 54,
652
+ /**
653
+ * 一度停车
654
+ */
655
+ ONCESTOP = 55,
656
+ /**
657
+ * 限速区段
658
+ */
659
+ SPEEDLIMIT = 56,
660
+ /**
661
+ * 接触网分相区
662
+ */
663
+ CONTACTLINEPSS = 57,
664
+ /**
665
+ * 无网区
666
+ */
667
+ CONTACTLINENOAREA = 58,
668
+ /**
669
+ * 其他不控车防控点
670
+ */
671
+ NOCONTROLPOINT = 59,
672
+ /**
673
+ * 高站台
674
+ */
675
+ HIGHPLATFORM = 60,
676
+ /**
677
+ * 标注:方形按钮
678
+ */
679
+ MARK_SQUAREBTN = 62,
680
+ /**
681
+ * 标注:箭头
682
+ */
683
+ MARK_ARROW = 63,
684
+ /**
685
+ * 标注:小矩形框
686
+ */
687
+ MARK_RECT = 64,
688
+ /**
689
+ * 高站台平面图展示辅助线
690
+ */
691
+ HIGHPLATFORMLINE = 65,
692
+ /**
693
+ * 驼峰溜放标志
694
+ */
695
+ HUMPSLIP = 66,
696
+ /**
697
+ * 通道门
698
+ */
699
+ CHANNELDOOR = 67,
700
+ /**
701
+ * 天窗区域
702
+ */
703
+ SKYLIGHTAREA = 68,
704
+ /**
705
+ * 行走线
706
+ */
707
+ WALKWAY = 69,
708
+ /**
709
+ * 肩章动态范围
710
+ */
711
+ SHOULDERDYNAMIC = 70,
712
+ /**
713
+ * 水阻台
714
+ */
715
+ WATERBRAKE = 71,
716
+ /**
717
+ * 内燃机车库
718
+ */
719
+ DIESELDEPOT = 72,
720
+ /**
721
+ * 小辅修库
722
+ */
723
+ AUXREPAIRDEPOT = 73,
724
+ /**
725
+ * 镟轮库
726
+ */
727
+ WHEELLATHEDEPOT = 74,
728
+ /**
729
+ * 启机棚
730
+ */
731
+ STARTSHED = 75,
732
+ /**
733
+ * 中修库
734
+ */
735
+ OVERHAULDEPOT = 76,
736
+ /**
737
+ * 台位
738
+ */
739
+ BERTH = 77,
740
+ /**
741
+ * 图例
742
+ */
743
+ LEGEND = 78,
744
+ /**
745
+ * 肩章静态范围
746
+ */
747
+ SHOULDERSTATIC = 79,
748
+ /**
749
+ * 施工安全等待区
750
+ */
751
+ WORKWAITAREA = 80,
752
+ /**
753
+ * 墙/围栏
754
+ */
755
+ FENCE = 81,
756
+ /**
757
+ * 施工防护区域
758
+ */
759
+ WORKPROTECTAREA = 82,
760
+ /**
761
+ * 区间道口
762
+ */
763
+ INTERVALCROSS = 83,
764
+ /**
765
+ * 接触网杆
766
+ */
767
+ CONTACTLINEPOLE = 86,
768
+ /**
769
+ * 大门
770
+ */
771
+ DOOR = 87,
772
+ /**
773
+ * 遮挡物/雨棚
774
+ */
775
+ CANOPY = 88,
776
+ /**
777
+ * (区间)接触网分相
778
+ */
779
+ INTERVALCONTACTLINEPSS = 89,
780
+ /**
781
+ * 区间通话柱
782
+ */
783
+ INTERVALCALLPOLE = 90,
784
+ /**
785
+ * 曲线
786
+ */
787
+ CURVE = 91,
788
+ /**
789
+ * 防洪
790
+ */
791
+ FLOODCONTROL = 92,
792
+ /**
793
+ * (区间)信号机
794
+ */
795
+ INTERVALSIGNAL = 93,
796
+ /**
797
+ * 坡道
798
+ */
799
+ SLOPE = 94,
800
+ /**
801
+ * 区间断链点
802
+ */
803
+ INTERVALCHAINBREAK = 95,
804
+ /**
805
+ * 路网辅助点
806
+ */
807
+ ROADNETAUX = 96,
808
+ /**
809
+ * 标注
810
+ */
811
+ MARK = 97,
812
+ /**
813
+ * 辅助点
814
+ */
815
+ AUXPOINT = 98,
816
+ /**
817
+ * 逻辑点
818
+ */
819
+ LOGICPOINT = 99
820
+ }
821
+
822
+ /**
823
+ * 联锁信号机状态定义
824
+ * 与服务器返回的联锁信号机状态保持一致
825
+ */
826
+ declare enum InterLockSignalStateEnums {
827
+ /**
828
+ * 红灯
829
+ */
830
+ RedLight = 1,
831
+ /**
832
+ * 绿灯
833
+ */
834
+ GreenLight = 2,
835
+ /**
836
+ * 白灯
837
+ */
838
+ WhiteLight = 3,
839
+ /**
840
+ * 蓝灯
841
+ */
842
+ BlueLight = 4,
843
+ /**
844
+ * 未知
845
+ */
846
+ Unknown = 5
847
+ }
848
+ declare enum SignalColorEnums {
849
+ Red = "red",
850
+ Green = "green",
851
+ Blue = "blue",
852
+ White = "white"
853
+ }
854
+ /**
855
+ * 联锁电路区段状态定义
856
+ * 增加一个5 用于展示非集中区进路
857
+ * @type {Array}
858
+ */
859
+ declare enum InterLockCircuitStateEnums {
860
+ /**
861
+ * 红色电路
862
+ */
863
+ RedCircuit = 1,
864
+ /**
865
+ * 白色电路
866
+ */
867
+ WhiteCircuit = 2,
868
+ /**
869
+ * 等效红色电路
870
+ */
871
+ EqualRedCircuit = 3,
872
+ /**
873
+ * 灰色电路
874
+ */
875
+ GreyCircuit = 4,
876
+ /**
877
+ * 绿色电路
878
+ */
879
+ GreenCircuit = 5
880
+ }
881
+ /**
882
+ * 联锁道岔状态定义
883
+ *
884
+ */
885
+ declare enum InterLockSwitchlocStateEnums {
886
+ /**
887
+ * 定位
888
+ */
889
+ NormalPosition = 2,
890
+ /**
891
+ * 反位
892
+ */
893
+ ReversePosition = 3,
894
+ /**
895
+ * 四开位
896
+ */
897
+ NeutralPosition = 4
898
+ }
899
+ /**
900
+ * 闭塞信号状态定义
901
+ * 0接车绿色 1 接车黄色 2接车红色 3发车绿色 4发车黄色 5 发车红色 6闭塞 7事故 8复原
902
+ */
903
+ declare enum BsSignalStateEnums {
904
+ COME_GREEN = 0,
905
+ COME_YELLOW = 1,
906
+ COME_RED = 2,
907
+ GO_GREEN = 3,
908
+ GO_YELLOW = 4,
909
+ GO_RED = 5,
910
+ LOCK = 6,
911
+ EMERGENCY = 7,
912
+ RESET = 8
913
+ }
914
+
915
+ /**
916
+ * 防控类型定义
917
+ * 与服务器返回的防控类型保持一致
918
+ */
919
+ declare enum PreventionEnums {
920
+ /**
921
+ * 空防控点
922
+ */
923
+ NULL = 0,
924
+ /**
925
+ * 土档
926
+ */
927
+ BUMPER = 1,
928
+ /**
929
+ * 接触网终点
930
+ */
931
+ CONTACTLINEEND = 2,
932
+ /**
933
+ * 固定脱轨器
934
+ */
935
+ FIXEDDERAILER = 3,
936
+ /**
937
+ * 禁停区
938
+ */
939
+ CONTACTLINENOSTOP = 4,
940
+ /**
941
+ * 禁停区内部
942
+ */
943
+ CONTACTLINENOSTOPIN = 5,
944
+ /**
945
+ * 其他不控车防控点
946
+ */
947
+ OTHERPROMPT = 6,
948
+ /**
949
+ * 其他控车防控点
950
+ */
951
+ OTHERBRAKE = 7,
952
+ /**
953
+ * 一度停车
954
+ */
955
+ ONESTOP = 8,
956
+ /**
957
+ * 限速区
958
+ */
959
+ SPEEDLIMITED = 9,
960
+ /**
961
+ * 限速预警提示
962
+ */
963
+ SPEEDNOTICE = 10,
964
+ /**
965
+ * 道岔限速提示区
966
+ */
967
+ CROSSSPEEDLIMITED = 11,
968
+ /**
969
+ * 分相区
970
+ */
971
+ CONTACTLINEPSS = 12,
972
+ /**
973
+ * 特殊发码信号机
974
+ */
975
+ SSG = 13,
976
+ /**
977
+ * 分相区内部,暂时无语音提示
978
+ */
979
+ CONTACTLINEPSSIN = 14,
980
+ /**
981
+ * 无网区
982
+ */
983
+ CONTACTLINENOAREA = 15,
984
+ /**
985
+ * 高柱信号机
986
+ */
987
+ HIGHPOSTSIGNAL = 16,
988
+ /**
989
+ * 救援机车
990
+ */
991
+ RESCUEVEHICLE = 17,
992
+ /**
993
+ * 道口
994
+ */
995
+ RAILWAYCROSS = 18,
996
+ /**
997
+ * 机车
998
+ */
999
+ TRAIN = 19,
1000
+ /**
1001
+ * 站界
1002
+ */
1003
+ STATIONBOUND = 20,
1004
+ /**
1005
+ * 矮柱信号机
1006
+ */
1007
+ SHORTPOSTSIGNAL = 21,
1008
+ /**
1009
+ * 桥
1010
+ */
1011
+ BRIDGE = 22,
1012
+ /**
1013
+ * 白
1014
+ */
1015
+ WHITE = 23,
1016
+ /**
1017
+ * 白蓝
1018
+ */
1019
+ WHITEBLUE = 24,
1020
+ /**
1021
+ * 蓝
1022
+ */
1023
+ BLUE = 25,
1024
+ /**
1025
+ * 蓝白
1026
+ */
1027
+ BLUEWHITE = 26,
1028
+ /**
1029
+ * 坡
1030
+ */
1031
+ SLOPE = 27,
1032
+ /**
1033
+ * 人员
1034
+ */
1035
+ PEOPLE = 28,
1036
+ /**
1037
+ * 隧道
1038
+ */
1039
+ TUNNEL = 29,
1040
+ /**
1041
+ * 危险区
1042
+ */
1043
+ DANGER = 30,
1044
+ /**
1045
+ * 信号机
1046
+ */
1047
+ SIGNAL = 31,
1048
+ /**
1049
+ * 转弯
1050
+ */
1051
+ SWERVE = 32,
1052
+ /**
1053
+ * 道岔
1054
+ */
1055
+ SWITCH = 33,
1056
+ /**
1057
+ * 警冲标
1058
+ */
1059
+ FOULINGPOST = 38,
1060
+ /**
1061
+ * 股道存车
1062
+ */
1063
+ CUNCHE = 39,
1064
+ /**
1065
+ * 调车边界
1066
+ */
1067
+ STATIONBOUNDEXTEND = 40,
1068
+ /**
1069
+ * 红
1070
+ */
1071
+ RED = 41,
1072
+ /**
1073
+ * 绿
1074
+ */
1075
+ GREEN = 42,
1076
+ /**
1077
+ * 黄
1078
+ */
1079
+ YELLOW = 43,
1080
+ /**
1081
+ * 封锁区
1082
+ */
1083
+ BLOCKLINE = 50,
1084
+ /**
1085
+ * 施工区
1086
+ */
1087
+ WORKAREA = 51,
1088
+ /**
1089
+ * 施工路径
1090
+ */
1091
+ ROUTELINE = 52,
1092
+ /**
1093
+ * 停车点
1094
+ */
1095
+ PARK = 53,
1096
+ /**
1097
+ * 施工区边界
1098
+ */
1099
+ WORKBUOND = 54,
1100
+ /**
1101
+ * 施工区终点
1102
+ */
1103
+ WORKBUONDCROSS = 55,
1104
+ /**
1105
+ * 虚拟站界
1106
+ */
1107
+ VIRTUALSTATIONBOUND = 56,
1108
+ /**
1109
+ * 左侧高站台
1110
+ */
1111
+ LEFTHIGHPLATFORM = 61,
1112
+ /**
1113
+ * 右侧高站台
1114
+ */
1115
+ RIGHTHIGHPLATFORM = 62,
1116
+ /**
1117
+ * 两侧高站台
1118
+ */
1119
+ BOTHSIDEHIGHPLATFORM = 63,
1120
+ /**
1121
+ * 脱轨器
1122
+ */
1123
+ TGQ = 47,
1124
+ /**
1125
+ * 大门
1126
+ */
1127
+ DOOR = 87,
1128
+ /**
1129
+ * 其他
1130
+ */
1131
+ OTHER = 95,
1132
+ /**
1133
+ * 补机
1134
+ */
1135
+ SIDE = 253,
1136
+ /**
1137
+ * 无地图
1138
+ */
1139
+ NONE = 254,
1140
+ /**
1141
+ * 最大值
1142
+ */
1143
+ MAX = 255,
1144
+ /**
1145
+ * 隔离
1146
+ */
1147
+ ISOLATE = 35,
1148
+ /**
1149
+ * 防护道岔
1150
+ */
1151
+ ISOLATESWITCH = 100
1152
+ }
1153
+
1154
+ /**
1155
+ * 联锁信号机状态对应颜色 map 定义
1156
+ */
1157
+ declare const INTERLOCK_SIGNAL_MAP: Record<InterLockSignalStateEnums, string | null>;
1158
+ /**
1159
+ * 联锁信号机状态对应颜色 map 定义
1160
+ */
1161
+ declare const INTERLOCK_SIGNAL_COLOR_MAP: Record<number, SignalColorEnums>;
1162
+ /**
1163
+ * 联锁电路区段状态对应颜色 map 定义
1164
+ */
1165
+ declare const INTERLOCK_CIRCUIT_MAP: Record<InterLockCircuitStateEnums, string | null>;
1166
+ /**
1167
+ * 联锁道岔状态对应颜色 map 定义
1168
+ */
1169
+ declare const INTERLOCK_SWITCHLOC_MAP: Record<InterLockSwitchlocStateEnums, string>;
1170
+ /**
1171
+ * 闭塞信号状态对应颜色 map 定义
1172
+ */
1173
+ declare const BS_SIGNAL_MAP: Record<BsSignalStateEnums, string | null>;
1174
+
1175
+ /**
1176
+ * 站场地图基础颜色定义
1177
+ */
1178
+ declare const MapColor: {
1179
+ readonly BASE_COLOR: "rgb(85,120,182)";
1180
+ readonly BG_COLOR: "rgb(0,0,0)";
1181
+ };
1182
+
1183
+ /**
1184
+ * 防控类型对应名称与别名定义
1185
+ */
1186
+ declare const PREVENTION_TYPES: Record<PreventionEnums, {
1187
+ name: string;
1188
+ alias: string;
1189
+ }>;
1190
+
1191
+ /** * 生成铁鞋的canvas
1192
+ * @param width 铁鞋宽度
1193
+ * @param height 铁鞋高度
1194
+ * @param direction 铁鞋方向 right/left
1195
+ * @param color 颜色
1196
+ * @returns
1197
+ */
1198
+ declare const createIronShoesCanvas: (direction: string, color: string) => HTMLCanvasElement;
1199
+ /**
1200
+ * 人力制动器 26*26 圆形底座加叉 手闸
1201
+ * @param color
1202
+ * @returns
1203
+ */
1204
+ declare const createManualBrakingCanvas: (color: string) => HTMLCanvasElement;
1205
+ /**
1206
+ * 紧固器符号
1207
+ * @param color 颜色
1208
+ * @param text 名称,也可以设置在外style
1209
+ * @returns
1210
+ */
1211
+ declare const createFastenerCanvas: (color: string, text?: string) => HTMLCanvasElement;
1212
+
1213
+ /**
1214
+ * 生成信号机的canvas
1215
+ * @param stype 1=高柱 2=矮柱
1216
+ * @param color 状态颜色
1217
+ * @param positionSide 左右手 1=左手 2=右手
1218
+ * @returns
1219
+ */
1220
+ declare const createSignalCanvas: (stype: number, color: string, positionSide: number) => HTMLCanvasElement;
1221
+ /**
1222
+ * 创建土档canvas
1223
+ * @returns
1224
+ */
1225
+ declare const createBumperCanvas: () => HTMLCanvasElement;
1226
+ declare const createOverLimitCanvas: () => HTMLCanvasElement;
1227
+
1228
+ /**
1229
+ * 创建接触网终点的canvas
1230
+ * @returns
1231
+ */
1232
+ declare const createCatenaryEndCanvas: () => HTMLCanvasElement;
1233
+
1234
+ /**
1235
+ * 创建脱轨器canvas
1236
+ * @returns
1237
+ */
1238
+ declare const createDerailingStopCanvas: () => HTMLCanvasElement;
1239
+ /**
1240
+ * 创建自动脱轨器canvas
1241
+ * @param dir 方向 1:左侧(成都) 2:右侧(重庆)
1242
+ * @returns
1243
+ */
1244
+ declare const createAutoDerailingStopCanvas: (dir: number) => HTMLCanvasElement;
1245
+
1246
+ /**
1247
+ * 创建大门的canvas图标,外部显示时要考虑与股道的垂直角度
1248
+ * @param stateColor 状态颜色
1249
+ * @returns
1250
+ */
1251
+ declare const createTrackDoorCanvas: (stateColor: string) => HTMLCanvasElement;
1252
+
1253
+ /**
1254
+ * 生成机车图标
1255
+ * @type {[type]}
1256
+ */
1257
+ declare const createLocomotiveImg: (opt_options?: Record<string, unknown>, deltaX?: number) => HTMLCanvasElement;
1258
+ /**
1259
+ * 生成虚拟本务机图标
1260
+ * @type {[type]}
1261
+ */
1262
+ declare const createJflcLocomotiveImg: (opt_options?: Record<string, unknown>, rotate?: boolean) => HTMLCanvasElement;
1263
+ /**
1264
+ * 创建未知方向的虚拟机车
1265
+ * @param opt_options
1266
+ * @returns
1267
+ */
1268
+ declare const createUnknowJflcLocomotiveImg: (opt_options?: Record<string, unknown>) => HTMLCanvasElement;
1269
+
1270
+ declare const index$1_createAutoDerailingStopCanvas: typeof createAutoDerailingStopCanvas;
1271
+ declare const index$1_createBumperCanvas: typeof createBumperCanvas;
1272
+ declare const index$1_createCatenaryEndCanvas: typeof createCatenaryEndCanvas;
1273
+ declare const index$1_createDerailingStopCanvas: typeof createDerailingStopCanvas;
1274
+ declare const index$1_createFastenerCanvas: typeof createFastenerCanvas;
1275
+ declare const index$1_createIronShoesCanvas: typeof createIronShoesCanvas;
1276
+ declare const index$1_createJflcLocomotiveImg: typeof createJflcLocomotiveImg;
1277
+ declare const index$1_createLocomotiveImg: typeof createLocomotiveImg;
1278
+ declare const index$1_createManualBrakingCanvas: typeof createManualBrakingCanvas;
1279
+ declare const index$1_createOverLimitCanvas: typeof createOverLimitCanvas;
1280
+ declare const index$1_createSignalCanvas: typeof createSignalCanvas;
1281
+ declare const index$1_createTrackDoorCanvas: typeof createTrackDoorCanvas;
1282
+ declare const index$1_createUnknowJflcLocomotiveImg: typeof createUnknowJflcLocomotiveImg;
1283
+ declare namespace index$1 {
1284
+ export { index$1_createAutoDerailingStopCanvas as createAutoDerailingStopCanvas, index$1_createBumperCanvas as createBumperCanvas, index$1_createCatenaryEndCanvas as createCatenaryEndCanvas, index$1_createDerailingStopCanvas as createDerailingStopCanvas, index$1_createFastenerCanvas as createFastenerCanvas, index$1_createIronShoesCanvas as createIronShoesCanvas, index$1_createJflcLocomotiveImg as createJflcLocomotiveImg, index$1_createLocomotiveImg as createLocomotiveImg, index$1_createManualBrakingCanvas as createManualBrakingCanvas, index$1_createOverLimitCanvas as createOverLimitCanvas, index$1_createSignalCanvas as createSignalCanvas, index$1_createTrackDoorCanvas as createTrackDoorCanvas, index$1_createUnknowJflcLocomotiveImg as createUnknowJflcLocomotiveImg };
1285
+ }
1286
+
1287
+ /**
1288
+ * 创建信号图标
1289
+ * @returns Promise<HTMLImageElement>
1290
+ */
1291
+ declare const createSignalIcon: (type?: string, dir?: string, color?: string) => Promise<HTMLImageElement>;
1292
+ /**
1293
+ * 创建接触网图标
1294
+ * @returns Promise<HTMLImageElement>
1295
+ */
1296
+ declare const createJcwIcon: () => Promise<HTMLImageElement>;
1297
+ /**
1298
+ * 创建土挡图标
1299
+ * @returns Promise<HTMLImageElement>
1300
+ */
1301
+ declare const createBumperIcon: () => Promise<HTMLImageElement>;
1302
+ /**
1303
+ * 创建大门图标
1304
+ * @returns Promise<HTMLImageElement>
1305
+ */
1306
+ declare const createDoorIcon: () => Promise<HTMLImageElement>;
1307
+ /**
1308
+ * 脱轨器图标
1309
+ * @returns Promise<HTMLImageElement>
1310
+ */
1311
+ declare const createDerailingStopIcon: () => Promise<HTMLImageElement>;
1312
+ /**
1313
+ * 创建侵限绝缘图标
1314
+ * @returns Promise<HTMLImageElement>
1315
+ */
1316
+ declare const createOverLimitIcon: () => Promise<HTMLImageElement>;
1317
+
1318
+ declare const createAllIcons: () => Promise<IconType[]>;
1319
+
1320
+ declare const index_createAllIcons: typeof createAllIcons;
1321
+ declare const index_createBumperIcon: typeof createBumperIcon;
1322
+ declare const index_createDerailingStopIcon: typeof createDerailingStopIcon;
1323
+ declare const index_createDoorIcon: typeof createDoorIcon;
1324
+ declare const index_createJcwIcon: typeof createJcwIcon;
1325
+ declare const index_createOverLimitIcon: typeof createOverLimitIcon;
1326
+ declare const index_createSignalIcon: typeof createSignalIcon;
1327
+ declare namespace index {
1328
+ export { index_createAllIcons as createAllIcons, index_createBumperIcon as createBumperIcon, index_createDerailingStopIcon as createDerailingStopIcon, index_createDoorIcon as createDoorIcon, index_createJcwIcon as createJcwIcon, index_createOverLimitIcon as createOverLimitIcon, index_createSignalIcon as createSignalIcon };
1329
+ }
1330
+
1331
+ /**
1332
+ * 将 3857 坐标系的 geojson 数据转换为 4326 坐标系的 geojson 数据
1333
+ * @param geojson 3857 坐标系的 GeoJSON
1334
+ * @returns 4326 坐标系的 GeoJSON
1335
+ */
1336
+ declare const transformGeoJsonFrom3857: (geojson: GeoJSON.FeatureCollection) => GeoJSON.FeatureCollection;
1337
+ /**
1338
+ * 处理兼容关键属性字段
1339
+ * @param layerName 图层名称 LayerType
1340
+ * @param geojson 4326 坐标系的 GeoJSON
1341
+ * @returns
1342
+ */
1343
+ declare const transformGeoJsonProperties: (layerName: string, geojson: GeoJSON.FeatureCollection) => void;
1344
+ /**
1345
+ * 对 FeatureCollection 中所有坐标施加 x/y 偏移
1346
+ * @param {GeoJSON.FeatureCollection} featureCollection
1347
+ * @param {number} offsetX - 经度方向偏移量
1348
+ * @param {number} offsetY - 纬度方向偏移量
1349
+ * @returns {GeoJSON.FeatureCollection} 新的 FeatureCollection
1350
+ */
1351
+ declare function offsetFeatureCollection(featureCollection: GeoJSON.FeatureCollection, offsetX: number, offsetY: number): GeoJSON.FeatureCollection;
1352
+
1353
+ type LineGeometry = GeoJSON.LineString | GeoJSON.MultiLineString;
1354
+ interface AttachTrackAngleOptions {
1355
+ /** vector / geojson source id */
1356
+ sourceId: string;
1357
+ /** 点要素所在 source-layer(如 prevention) */
1358
+ pointSourceLayer: string;
1359
+ /** 股道 source-layer */
1360
+ trackSourceLayer: string;
1361
+ /** 写入 icon-rotate 的 symbol 图层 id */
1362
+ layerId: string;
1363
+ /** 接口要素(需含 code、trackCode / track_code) */
1364
+ controlFeatures: GeoJSON.Feature[];
1365
+ /** 过滤要算角的点要素;不传则该 source-layer 下所有 Point 都算 */
1366
+ filterPoint?: (feature: maplibregl.GeoJSONFeature) => boolean;
1367
+ /**
1368
+ * 角度偏移(度),默认 0。
1369
+ * 图标默认水平且需垂直于股道时一般为 0;若图标默认朝向不同可传 ±90。
1370
+ */
1371
+ angleOffset?: number;
1372
+ layerSuffix?: string;
1373
+ }
1374
+ /**
1375
+ * 计算点在折线上的股道方位角(度)。
1376
+ * 与 MapLibre `icon-rotate` + `icon-rotation-alignment: 'map'` 一致:相对正北顺时针。
1377
+ * 图标默认水平时,该角即垂直于股道。
1378
+ */
1379
+ declare const getTrackBearing: (lineGeom: LineGeometry, pointGeom: GeoJSON.Point) => number;
1380
+ /**
1381
+ * 按 control.trackCode 关联股道,计算点要素旋转角,写入目标 symbol 层的 icon-rotate。
1382
+ * layout 不支持 feature-state,故用 match + feature id(需 source promoteId: 'code')。
1383
+ *
1384
+ * 可用于大门、接触网终点等需按股道定向的点图层。
1385
+ */
1386
+ declare const attachTrackAngle: (map: Map$1, options: AttachTrackAngleOptions) => void;
1387
+
1388
+ export { type AttachTrackAngleOptions, BS_SIGNAL_MAP, BsSignalStateEnums, type FeatureState, INTERLOCK_CIRCUIT_MAP, INTERLOCK_SIGNAL_COLOR_MAP, INTERLOCK_SIGNAL_MAP, INTERLOCK_SWITCHLOC_MAP, type InsulationSignals, InterLockCircuitStateEnums, InterLockInsulation, InterLockSignalStateEnums, InterLockSwitchlocStateEnums, InterLockVisualization, type InterlockData, type InterlockItem, InterlockProtocol, type InterlockVisualizationOptions, MapColor, MeasureTool, PREVENTION_TYPES, PreventionEnums, SignalColorEnums, StationFeatureCodeEnums, TeeeMap, attachTrackAngle, index$1 as canvasCreator, getTrackBearing, index as imageCreater, offsetFeatureCollection, transformGeoJsonFrom3857, transformGeoJsonProperties };