@sl-utils/map 1.0.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,894 @@
1
+ /**-------------------------------工具类 canvas 类型文件-------------------------------*/
2
+ type GlobalCompositeOperationSelf = 'color' | 'color-burn' | 'color-dodge' | 'copy' | 'darken' | 'destination-atop' | 'destination-in' | 'destination-out' | 'destination-over' | 'difference' | 'exclusion' | 'hard-light' | 'hue' | 'lighten' | 'lighter' | 'luminosity' | 'multiply' | 'overlay' | 'saturation' | 'screen' | 'soft-light' | 'source-atop' | 'source-in' | 'source-out' | 'source-over' | 'xor';
3
+ /**canvas相关的配置项 */
4
+ interface SLPCanvas {
5
+ /**透明度 */
6
+ alpha?: number;
7
+ /**填充的颜色透明度 */
8
+ fillAlpha?: number;
9
+ /**填充的颜色 (字体的颜色) */
10
+ colorFill?: string | CanvasGradient | CanvasPattern;
11
+ /**线条的颜色 */
12
+ colorLine?: string | CanvasGradient | CanvasPattern;
13
+ /**模糊阴影颜色 */
14
+ shadowColor?: string;
15
+ /**模糊范围大小 */
16
+ shadowBlur?: number;
17
+ /**线宽(文本阴影) */
18
+ widthLine?: number;
19
+ /**虚线 线长,间隔长 */
20
+ dash?: [number, number];
21
+ /**虚线偏移 */
22
+ dashOff?: number;
23
+ /**文本字体 设置字体大小和字体种类 14px serif */
24
+ font?: string;
25
+ /**文本对齐方式的属性 指定文本的(中心|左侧|右侧)渲染在指定位置 */
26
+ textAlign?: CanvasTextAlign;
27
+ /**文字垂直方向的对齐方式 alphabetic 未使用 */
28
+ textBaseline?: CanvasTextBaseline;
29
+ globalCompositeOperation?: GlobalCompositeOperationSelf;
30
+ /**为true时图片隐藏不绘制 */
31
+ ifHide?: boolean;
32
+ }
33
+ /**单点位 */
34
+ interface CanvasPoint {
35
+ /**映射到canvas上的位置 [x,y] */
36
+ point: [number, number];
37
+ /**映射到canvas上的多个位置 [x,y][] */
38
+ points?: [number, number][];
39
+ }
40
+ /**多点位 */
41
+ interface CanvasPoints {
42
+ /**映射到canvas上的位置 [x,y] */
43
+ point?: [number, number];
44
+ /**映射到canvas上的多个位置 [x,y][] */
45
+ points: [number, number][];
46
+ }
47
+ /**图片的基本配置 */
48
+ interface CanvasImage<I = any> {
49
+ id?: string;
50
+ /**图片路径 */
51
+ url: string;
52
+ /**图片大小(渲染的) */
53
+ size?: [number, number];
54
+ /**整图中截取的大小 */
55
+ sizeo?: [number, number];
56
+ /**整图中的位置X左边(css中的定位取正数) */
57
+ posX?: number;
58
+ /**整图中的位置Y上(css中的定位取正数) */
59
+ posY?: number;
60
+ /**图片中心左偏移位置大小(与position定位相同) */
61
+ left?: number;
62
+ /**图片中心上偏移位置大小(与position定位相同) */
63
+ top?: number;
64
+ /**图片旋转角度 */
65
+ rotate?: number;
66
+ /**透明度 */
67
+ alpha?: number;
68
+ /**为true时图片隐藏不绘制也象征着事件不响应 */
69
+ ifHide?: boolean;
70
+ /**大于0在上 小于0在下 */
71
+ index?: number;
72
+ /**通过该信息可决定图片是否显示或其他情况 */
73
+ info?: I;
74
+ }
75
+ /**gif的基本配置 */
76
+ interface CanvasGif<I = any> extends CanvasImage<I> {
77
+ /**id必传且唯一,用于后续关闭之前绘制的动画 */
78
+ id: string;
79
+ delay?: number;
80
+ }
81
+ /**文本绘制 */
82
+ interface CanvasTxt<I = any> extends SLPCanvas {
83
+ /**文本内容 */
84
+ text?: string;
85
+ /**是否描边(描边颜色 colorLine 描边大小 widthLine) */
86
+ ifShadow?: boolean;
87
+ /**水平偏移量 右偏>0 左偏<0*/
88
+ px?: number;
89
+ /**垂直偏移量 下偏>0 上偏<0*/
90
+ py?: number;
91
+ /**文本间距 无则默认取actualBoundingBoxDescent属性获取文字基线向下边界高度*/
92
+ lineHeight?: number;
93
+ /**文本最大宽度 */
94
+ maxWidth?: number;
95
+ /**背景板 */
96
+ panel?: CanvasTextPanel;
97
+ /**文本重叠处理方式(不设置等同于type:show) */
98
+ overlap?: TextOverlap;
99
+ /**通过该信息可决定其他情况 */
100
+ info?: I;
101
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillText) */
102
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/measureText) */
103
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeText) */
104
+ }
105
+ /**文字背景板的配置 */
106
+ interface CanvasTextPanel extends SLPCanvas {
107
+ /**面板的圆角半径 3 */
108
+ radius?: number;
109
+ /**padding left 设置背景板生效*/
110
+ pl?: number;
111
+ /**padding right 设置背景板生效*/
112
+ pr?: number;
113
+ /**padding top 设置背景板生效*/
114
+ pt?: number;
115
+ /**padding bottom 设置背景板生效*/
116
+ pb?: number;
117
+ }
118
+ interface TextOverlap {
119
+ /**文本重叠处理方式 hide隐藏|py偏移|show强制显示*/
120
+ type?: 'hide' | 'py' | 'show';
121
+ /**最大查找距离 超过距离不显示 */
122
+ maxDistance?: number;
123
+ /**矩形之间最小间距 可以为负 重叠一部分*/
124
+ minSpacing?: number;
125
+ /**点和矩形最小距离 */
126
+ minDistance?: number;
127
+ /**遍历间距 */
128
+ querySpace?: number;
129
+ /**指示线配置(配置后才渲染) */
130
+ line?: CanvasLine;
131
+ }
132
+ /**圆点 */
133
+ interface CanvasArc<I = any> extends SLPCanvas {
134
+ /**圆半径 */
135
+ size?: number;
136
+ /**通过该信息可决定其他情况 */
137
+ info?: I;
138
+ }
139
+ /**矩形渲染 */
140
+ interface CanvasRect_<I = any> extends SLPCanvas {
141
+ /**矩形宽*/
142
+ width?: number;
143
+ /**矩形高*/
144
+ height?: number;
145
+ /**矩形圆角*/
146
+ radius?: number | number[];
147
+ /**通过该信息可决定其他情况 */
148
+ info?: I;
149
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clearRect) */
150
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillRect) */
151
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeRect) */
152
+ }
153
+ /**多边形渲染 */
154
+ interface CanvasPolygon<I = any> extends SLPCanvas {
155
+ /**通过该信息可决定其他情况 */
156
+ info?: I;
157
+ }
158
+ /**线渲染 */
159
+ interface CanvasLine<I = any> extends SLPCanvas {
160
+ /**贝塞尔曲线的曲度 数值越大越弯曲 */
161
+ degree?: number;
162
+ /**通过该信息可决定其他情况 */
163
+ info?: I;
164
+ }
165
+
166
+ /**canvas绘图类型空间 */
167
+ declare namespace SLTCanvas {
168
+ /**canvse上的点位信息 */
169
+ type Point = CanvasPoint | CanvasPoints;
170
+ /**canvas渲染的图片类 @param T 标识该图片携带的info的类型 事件响应时将挂载在MapEventResponse的info上*/
171
+ type Image<I = any> = CanvasImage<I> & (CanvasPoint | CanvasPoints);
172
+ /**canvas渲染的文本类 */
173
+ type Text<I = any> = CanvasTxt<I> & (CanvasPoint | CanvasPoints);
174
+ /**canvas渲染的圆点类 */
175
+ type Arc<I = any> = CanvasArc<I> & (CanvasPoint | CanvasPoints);
176
+ /**canvas渲染的矩形类 */
177
+ type Rect<I = any> = CanvasRect_<I> & (CanvasPoint | CanvasPoints);
178
+ type TextRect<I = any> = CanvasTxt<I> & CanvasRect_<I> & {
179
+ x: number;
180
+ y: number;
181
+ };
182
+ /**canvas渲染的多边形类 */
183
+ type Polygon<I = any> = SLPCanvas & CanvasPoints;
184
+ /**canvas渲染的线条类 */
185
+ type Line<I = any> = CanvasLine<I> & CanvasPoints;
186
+
187
+ type Event1<T extends Event = any, I = any> = Point & {
188
+ /**事件类型(挂在单个事件) */
189
+ type: SLTEventType | SLTEventType[];
190
+ /**申明事件特殊回调(不写则运用类里面的cb函数) */
191
+ cb?: (e: EventResponse<T, I>) => void;
192
+ /**申明事件特殊回调(挂多个事件的不同响应) */
193
+ cbs?: { [key in SLTEventType]: (e: EventResponse<T, I>) => void };
194
+ /**事件响应范围(px) */
195
+ range?: [number, number];
196
+ /**事件定位左偏移指定像素(类似position定位) */
197
+ left?: number;
198
+ /**事件定位上偏移指定像素(类似position定位) */
199
+ top?: number;
200
+ /**为true时图片隐藏不绘制也象征着事件不响应 */
201
+ ifHide?: boolean;
202
+ /** */
203
+ info?: I;
204
+ }
205
+ /**Canvas事件相关类 */
206
+ interface Event<T extends Event = any, I = any> {
207
+ /**映射到canvas上的位置 [x,y] */
208
+ point?: [number, number];
209
+ /**映射到canvas上的多个位置 [x,y][] */
210
+ points?: [number, number][];
211
+ /**事件类型(挂在单个事件) */
212
+ type: SLTEventType | SLTEventType[];
213
+ /**申明事件特殊回调(不写则运用类里面的cb函数) */
214
+ cb?: (e: EventResponse<T, I>) => void;
215
+ /**申明事件特殊回调(挂多个事件的不同响应) */
216
+ cbs?: { [key in SLTEventType]: (e: EventResponse<T, I>) => void };
217
+ /**事件响应范围(px) */
218
+ range?: [number, number];
219
+ /**事件定位左偏移指定像素(类似position定位) */
220
+ left?: number;
221
+ /**事件定位上偏移指定像素(类似position定位) */
222
+ top?: number;
223
+ /**为true时图片隐藏不绘制也象征着事件不响应 */
224
+ ifHide?: boolean;
225
+ /** */
226
+ info?: I;
227
+ }
228
+ /**事件触发时的响应对象 T事件对象 I为事件对象携带的信息*/
229
+ interface EventResponse<T = Event, I = any> {
230
+ /**事件类型 */
231
+ type: SLTEventType;
232
+ /**事件位置信息 */
233
+ position: CursorInfo;
234
+ /**鼠标信息 */
235
+ cursor: CursorInfo;
236
+ /**事件对象 CanvasEvent | Map*/
237
+ event: T;
238
+ /**事件挂载的相关info */
239
+ info: I;
240
+ }
241
+ /**事件触发时鼠标位置的信息 */
242
+ interface CursorInfo {
243
+ /**在canvas上的位置[x,y] */
244
+ point: [number, number];
245
+ /**在整个网页的位置[x,y] */
246
+ page: [number, number];
247
+ }
248
+ }
249
+
250
+
251
+
252
+
253
+ /**标识动画数据类型 */
254
+ interface CanvasAnimeElement {
255
+ /**动画唯一标识 保留动画状态 */
256
+ animeId: string
257
+ }
258
+ /**动画绘制基类*/
259
+ interface CanvasAnimeDraw {
260
+ /**绘制数据 */
261
+ data: CanvasAnimeElement & MapShow & (MapPoint | MapPoints)
262
+ /**动画回调 传入time为requestAnimeFrame的时间戳 返回当前动画进度 animeProgress*/
263
+ animeRender: (time: number) => number
264
+ /**动画渲染前相关逻辑 */
265
+ beforeRender: () => void
266
+ /**动画进度 0 - 1 */
267
+ animeProgress: number
268
+ /**更新动画进度后 回调 绘制类相关动画状态都在这里更新 */
269
+ updateAnimeProgress: (progress: number) => void;
270
+ /**一秒绘制帧率*/
271
+ frameRate: number
272
+ }
273
+
274
+ /**动画绘制状态 */
275
+ interface CanvasAnimeCtr {
276
+ /**动画唯一标识 */
277
+ animeId: string
278
+ /**动画进度 0 - 1 */
279
+ animeProgress: number
280
+ /**动画阶段 */
281
+ animeState?: string
282
+ /**后续拓展... */
283
+ type?: string
284
+ }
285
+
286
+
287
+ ///地图相关类型设置
288
+
289
+
290
+ /**-------------------------------工具类 地图扩展类型文件 ω 工具类内部使用-------------------------------*/
291
+ /**地图扩展 */
292
+ /**事件类型 */
293
+ declare type SLTEventType = 'unset' | 'click' | 'dblclick' | 'mousemove' | 'mousedown' | 'mouseup' | 'mouseleave' | 'mouseenter' | 'rightclick';
294
+ /**抛出给地图扩展的图片类 由于地图size可能采用固定m为单位,故采用不限定size的_BaseImage*/
295
+ type ωCanvasMapImage<I = any> = CanvasImage<I>;
296
+ /**抛出给地图扩展的Gif类 由于地图size可能采用固定m为单位,故采用不限定size的_BaseGif*/
297
+ type ωCanvasMapGif<I = any> = CanvasGif<I>;
298
+ /**显示的相关配置 */
299
+ interface MapShow {
300
+ /**显示的最大地图级别(包含此级别) */
301
+ maxZoom?: number,
302
+ /**显示的最小地图级别(包含此级别) */
303
+ minZoom?: number,
304
+ /**绘制层级,类似z-index */
305
+ index?: number,
306
+ }
307
+ /**地图上的纬度经度 [lat,lng] */
308
+ interface MapPoint {
309
+ latlng: [number, number],
310
+ latlngs?: [number, number][],
311
+ }
312
+ /**地图上的纬度经度 [lat,lng][] */
313
+ interface MapPoints {
314
+ latlngs: [number, number][],
315
+ latlng?: [number, number],
316
+ }
317
+ /**地图上的大小 */
318
+ interface MapSize {
319
+ size: [number, number] | number
320
+ sizeFix?: [number, number] | number
321
+ }
322
+ /**地图上的大小(米) */
323
+ interface MapSizeFix {
324
+ size?: [number, number] | number
325
+ sizeFix: [number, number] | number
326
+ }
327
+
328
+ type MM<T extends MapEvent = any, I = any> = SLTCanvas.Event1 | (MapPoint | MapPoints) & {
329
+ /**事件可触发的层级范围 */
330
+ minZoom?: number;
331
+ maxZoom?: number;
332
+ /**此事件对象的特殊回调(不写则运用类里面的cb函数) */
333
+ cb?: (e: MapEventResponse<T, I>) => void;
334
+ /**申明事件特殊回调(挂多个事件的不同响应) */
335
+ cbs?: { [key in SLTEventType]: (e: MapEventResponse<T, I>) => void; };
336
+ }
337
+
338
+
339
+
340
+ /** 地图上的事件 */
341
+ interface MapEvent<T extends MapEvent = any, I = any> extends SLTCanvas.Event<T, I> {
342
+ /**事件所在纬经度(恒定不变) */
343
+ latlng?: [number, number];
344
+ latlngs?: [number, number][];
345
+ /**事件可触发的层级范围 */
346
+ minZoom?: number;
347
+ maxZoom?: number;
348
+ /**此事件对象的特殊回调(不写则运用类里面的cb函数) */
349
+ cb?: (e: MapEventResponse<T, I>) => void;
350
+ /**申明事件特殊回调(挂多个事件的不同响应) */
351
+ cbs?: { [key in SLTEventType]: (e: MapEventResponse<T, I>) => void; };
352
+ }
353
+ /**地图事件触发时的响应对象 T为挂载此次事件的对象(MapImage|MapArc|Event),I为对象携带的相关数据*/
354
+ interface MapEventResponse<T extends MapEvent = MapEvent, I = any> extends SLTCanvas.EventResponse<T, I> {
355
+ /**鼠标信息 */
356
+ cursor: MapCursorInfo;
357
+ /**事件位置信息 */
358
+ position: MapCursorInfo;
359
+ /**事件的相关信息 */
360
+ event: T
361
+ }
362
+ /**地图事件触发时鼠标位置发出的信息 */
363
+ interface MapCursorInfo extends SLTCanvas.CursorInfo {
364
+ /**鼠标指针所在的纬经度 [lat,lng] */
365
+ latlng: [number, number];
366
+ }
367
+ /**地图上的图片(无事件)*/
368
+ type MapImage<I = any> = CanvasImage<I> & MapShow & (MapPoint | MapPoints) & (MapSize | MapSizeFix);
369
+ /**带事件的图片类 */
370
+ type MapImageEvent<I = any> = MapImage<I> & MapEvent<MapImageEvent<I>, I>;
371
+ /**地图上的Gif(无事件)*/
372
+ type MapGif<I = any> = ωCanvasMapGif<I> & MapShow & (MapPoint | MapPoints) & (MapSize | MapSizeFix);
373
+ /**带事件的Gif类 */
374
+ type MapGifEvent<I = any> = MapGif<I> & MapEvent<MapGifEvent<I>, I>;
375
+ /**不带事件的地图文本类 */
376
+ type MapText = CanvasTxt & MapShow & (MapPoint | MapPoints);
377
+ /**带事件的地图文本类 */
378
+ type MapTextEvent<I = any> = Text & MapEvent<MapTextEvent<I>, I>;
379
+ /**不带事件的圆点类 */
380
+ type MapArc = CanvasArc & MapShow & (MapPoint | MapPoints) & (MapSize | MapSizeFix);
381
+ /**带事件的圆点类 */
382
+ type MapArcEvent<I = any> = MapArc & MapEvent<MapArcEvent<I>, I>;
383
+ /**不带事件的矩形 */
384
+ type MapRect = CanvasRect_ & MapShow & MapPoints;
385
+ /**带事件的矩形类 */
386
+ type MapRectEvent<I = any> = MapRect & MapEvent<MapRectEvent<I>, I>;
387
+ /**不带事件的地图多边形类 */
388
+ type MapPolygon = CanvasPolygon & MapShow & MapPoints;
389
+ /**带事件的地图多边形类 */
390
+ type MapPolygonEvent<I = any> = MapPolygon & MapEvent<MapPolygonEvent<I>, I>;
391
+ /**不带事件的地图线条类 */
392
+ type MapLine = CanvasLine & MapShow & MapPoints;
393
+ /**带事件的地图线条类 */
394
+ type MapLineEvent<I = any> = MapLine & MapEvent<MapLineEvent<I>, I>;
395
+ /**地图类型定义 */
396
+ declare namespace SLTMap {
397
+ /**不带事件的图片类 */
398
+ type Image<I = any> = MapImage<I>;
399
+ /**不带事件的Gif类 */
400
+ type Gif<I = any> = MapGif<I>;
401
+ /**不带事件的地图文本类 */
402
+ type Text = MapText;
403
+ /**不带事件的圆点类 */
404
+ type Arc = MapArc;
405
+ /**不带事件的矩形 */
406
+ type Rect = MapRect;
407
+ /**不带事件的地图多边形类 */
408
+ type Polygon = MapPolygon;
409
+ /**不带事件的地图线条类 */
410
+ type Line = MapLine;
411
+ /**带事件的图片类 */
412
+ type ImageEvent<I = any> = MapImageEvent<I>;
413
+ /**带事件的Gif类 */
414
+ type GifEvent<I = any> = MapGifEvent<I>;
415
+ /**带事件雷达扫描类 */
416
+ type RadarScanEvent<I = any> = MapRadarScanEvent<I>;
417
+ /**带事件的地图文本类 */
418
+ type TextEvent<I = any> = MapTextEvent<I>;
419
+ /**带事件的圆点类 */
420
+ type ArcEvent<I = any> = MapArcEvent<I>;
421
+ /**带事件的矩形类 */
422
+ type RectEvent<I = any> = MapRectEvent<I>;
423
+ /**带事件的地图多边形类 */
424
+ type PolygonEvent<I = any> = MapPolygonEvent<I>;
425
+ /**带事件的地图线条类 */
426
+ type LineEvent<I = any> = MapLineEvent<I>;
427
+ /**地图事件触发时鼠标位置发出的信息 */
428
+ type CursorInfo = MapCursorInfo;
429
+ /** 地图事件 */
430
+ type Event<T extends Event = any, I = any> = MapEvent<T, I>;
431
+ /**地图事件触发时的响应对象 T为挂载此次事件的对象(MapImage|MapArc|Event),I为对象携带的相关数据*/
432
+ type EventResponse<T extends Event = Event, I = any> = MapEventResponse<T, I>;
433
+ }
434
+
435
+
436
+ interface MapTrackPara extends MapCanvasPara {
437
+ /**是否显示轨迹 */
438
+ ifLine?: boolean;
439
+ /**是否显示圆点 */
440
+ ifArc?: boolean;
441
+ /**圆点的间隔(大于1000时采用时间模式) */
442
+ arcInterval?: number;
443
+ minIcon?: string;
444
+ /**圆点大小 */
445
+ sizeArc?: number;
446
+ /**圆点颜色 ( rgb(),rgba(),#fff )*/
447
+ colorArc?: string;
448
+ /**圆点填充色*/
449
+ colorArcFill?: string;
450
+ alpha?: number;
451
+ /**线条宽度 */
452
+ widthLine?: number;
453
+ /**线条颜色 */
454
+ colorLine?: string;
455
+ /**起点文字 */
456
+ textStart?: string;
457
+ /**终点文字 */
458
+ textEnd?: string;
459
+ /**起点文字颜色 */
460
+ colorTextStart?: string;
461
+ /**终点文字颜色 */
462
+ colorTextEnd?: string;
463
+ /**起点圆点颜色 */
464
+ colorArcStart?: string;
465
+ /**终点圆点颜色 */
466
+ colorArcEnd?: string;
467
+ }
468
+ /**-----------------------------画布的部分配置---------------------------- */
469
+ interface MapCanvasPara extends L.LayerOptions {
470
+ /**画布挂载的div节点;
471
+ * map默认创建 mapPane tilePane shadowPane overlayPane markerPane tooltipPane popupPane,
472
+ * 不存在时CanvasLayer会调用创建方法
473
+ * 类名会去掉Pane, 例如XPane和X都生成类名为 leaflet-X-pane的div节点,但是属于不同的pane
474
+ */
475
+ pane?: string;
476
+ /**画布的class名称 */
477
+ className?: string
478
+ /**画布层级 默认100,最大400(受挂载的div影响,可修改) */
479
+ zIndex?: number;
480
+ /**zoom调整是开启缩放动画 true*/
481
+ zoomAnimation?: boolean;
482
+ }
483
+
484
+ /**地图插件原生事件触发后发出的对象 */
485
+ declare interface AMapMapsEvent {
486
+ lnglat: { Q: number, R: number, lng: number, lat: number }
487
+ originEvent: MouseEvent,
488
+ pixel: { x: number, y: number }
489
+ type: SLTEventType
490
+ }
491
+ declare interface SLPAMapLayer extends AMAP.CustomLayerOption {
492
+ /**添加增加动画画布 =>*/
493
+ aniCanvas?: boolean;
494
+ }
495
+ /** 0 leaflet 1 高德 2 百度 js类型 */
496
+ declare type MapType = 0 | 1 | 2
497
+ /** type 0 1 2 转化为对应库的类型 2百度地图 暂时不支持 */
498
+ declare type TypeToMap<T extends MapType> = T extends 0 ? L.Map : T extends 1 ? AMAP.Map : never
499
+ /**地图工具类命名空间 */
500
+ declare namespace MapUtils {
501
+ type MapOrginEvent<T> = T extends AMAP.Map ? AMapMapsEvent : T extends L.Map ? L.LeafletEvent : never;
502
+ /**
503
+ * 地图相关事件内置转化为对应库的事件 需要传入 type 0 | 1 | 2
504
+ */
505
+ interface MapEventResponse<R> {
506
+ /**事件类型 mousemove等 */
507
+ type: string;
508
+ latlng: { lat: number, lng: number };
509
+ /**画布的位置 */
510
+ containerPoint: { x: number, y: number };
511
+ /**库内置原始事件 */
512
+ orginMapEvent: MapOrginEvent<R>;
513
+ /**dom原生事件 */
514
+ orginDOMEvent: MouseEvent;
515
+ }
516
+
517
+ }
518
+
519
+ /**rbush 查询类*/
520
+ declare interface SLTRbush<T = any> {
521
+ minX: number,
522
+ minY: number,
523
+ maxX: number,
524
+ maxY: number,
525
+ data: T
526
+ }
527
+
528
+
529
+
530
+
531
+
532
+
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+ /**--------------------------------------------------------------地图扩展插件相关类型---------------------------------------------------- */
541
+
542
+
543
+
544
+
545
+ /**------雷达的配置(单个) ---- */
546
+ type MapPluginRadarPara<I = any> = {
547
+ /**动画唯一标识 保留动画状态 */
548
+ animeId: string
549
+ /**雷达方位角 正北为起始点 顺时针 @default [0,90]*/
550
+ angle?: [number, number],
551
+ /**扫描方向默认顺时针 @default true*/
552
+ ifClockwise?: boolean
553
+ /**扫描周期,单位秒 @default 3*/
554
+ time?: number
555
+ /**当前扫描角度 @default 0*/
556
+ currentAngle?: number
557
+ /**扇形扫描区域角度 @default 30*/
558
+ sectorAngle?: number;
559
+ /**扇形扫描区域颜色 @default #00FF00*/
560
+ colorSector?: string;
561
+ /**网格线颜色 @default #49EFEF66 */
562
+ colorGrid?: string;
563
+ /**标签文字颜色 @default #FFFF00 */
564
+ colorText?: string;
565
+ /**雷达主色调 @default #00FFFF */
566
+ colorRadar?: string
567
+ /**虚线圆颜色(颜色数少于线圈数时渐变) @default ['#FF0000','#00FF00'] */
568
+ colorDash?: string[];
569
+ /**虚线圆距离界限 @default [100,500] */
570
+ arcDash?: number[];
571
+ /**网格密度 半径划分n格*/
572
+ gridDensity?: number;
573
+ /**虚线圈密度 划分n圈*/
574
+ dashDensity?: number;
575
+ /**为true时隐藏不绘制也象征着事件不响应 */
576
+ ifHide?: boolean
577
+ /**雷达半径(根据size计算得出) */
578
+ radius?: number;
579
+ /**位置(根据经纬度计算得出) */
580
+ center?: [number, number]
581
+ /**通过该信息可决定图片是否显示或其他情况 */
582
+ info?: I
583
+ } & MapShow & MapPoint & MapSizeFix;
584
+ /**带事件的雷达扫描类 */
585
+ type MapRadarScanEvent<I = any> = MapPluginRadarPara<I> & MapEvent<MapRadarScanEvent<I>, I>;
586
+
587
+ /**------地图轨迹相关------------*/
588
+ /**轨迹必要的数据 */
589
+ interface MapTrackGroup<T = any> {
590
+ /**唯一标识 */
591
+ id: string;
592
+ /**轨迹名 */
593
+ name: string;
594
+ /**轨迹 */
595
+ data: MapTrackItem[];
596
+ /**原始数据源 */
597
+ orginData: T
598
+ }
599
+ /**轨迹必要的数据 */
600
+ interface MapTrackItem {
601
+ /**纬度 */
602
+ lat: number;
603
+ /**经度 */
604
+ lng: number;
605
+ /**速度 */
606
+ speed: number;
607
+ /**方向 */
608
+ course: number;
609
+ /**时间戳 */
610
+ timeStamp: number;
611
+ }
612
+ /**轨迹的各坐标点位信息 */
613
+ interface MapTrackPosition {
614
+ /**经度 */
615
+ LON: number
616
+ /**纬度 */
617
+ LAT: number
618
+ /**速度 */
619
+ SPEED: number
620
+ /**方向 */
621
+ COURSE: number
622
+ /**时间(秒) */
623
+ EPOCH: number
624
+ SAT: string
625
+ GAP_MINUTES: string
626
+ HEADING: string
627
+ /**该时间点已被应用 */
628
+ ifUse?: boolean
629
+ }
630
+ /**轨迹时的船信息 */
631
+ interface MapTrackShipInfo {
632
+ SHIP_ID: string
633
+ MMSI: string
634
+ SHIPNAME: string
635
+ TYPE_COLOR: string
636
+ LENGTH: string
637
+ WIDTH: string
638
+ W_LEFT: string
639
+ L_FORE: string
640
+ HIDDEN_SAT: string
641
+ POSITIONS: MapTrackPosition[]
642
+ }
643
+ /**轨迹中指定时间的点位信息 */
644
+ interface MapTrackTimePosition {
645
+ /**纬度 */
646
+ lat: number,
647
+ /**经度 */
648
+ lng: number,
649
+ /**时间 */
650
+ time: Date,
651
+ /**角度 */
652
+ rotate: number,
653
+ /**速度 */
654
+ speed: number
655
+ /**速度(后端传过来的) */
656
+ SPEED: number
657
+ }
658
+ /**轨迹中指定时间点的数据信息 */
659
+ interface MapTrackTimeInfo extends MapTrackTimePosition {
660
+ SHIP_ID: string
661
+ MMSI: string
662
+ SHIPNAME: string
663
+ TYPE_COLOR: string
664
+ LENGTH: string
665
+ WIDTH: string
666
+ W_LEFT: string
667
+ L_FORE: string
668
+ HIDDEN_SAT: string
669
+ }
670
+
671
+ interface MapTrackInfos {
672
+ [K: string]: MapTrackShipInfo
673
+ }
674
+
675
+ /**每一条轨迹的信息 */
676
+ type MapTrackInfo<T = {}> = CanvasLine & {
677
+ /**构成线的点位 */
678
+ latlngs: [number, number][];
679
+ /**个点位的信息(差异数据) */
680
+ infos: MapTrackPointInfo[];
681
+ } & T;
682
+ /**每条轨迹上所有有点位信息 */
683
+ type MapTrackPointInfo = {
684
+ /**纬度 */
685
+ lat: number;
686
+ /**经度 */
687
+ lng: number,
688
+ /**播发时间 */
689
+ time: Date,
690
+ /**角度(不属于后端传过来的值则是通过计算得到) */
691
+ rotate?: number;
692
+ };
693
+ /**轨迹上任意一时间获取到的相关信息 */
694
+ type MapTrackPointInfoByTime = {
695
+ /**纬度 */
696
+ lat: number;
697
+ /**经度 */
698
+ lng: number,
699
+ /**播发时间 */
700
+ time: Date,
701
+ /**角度(不属于后端传过来的值则是通过计算得到) */
702
+ rotate?: number;
703
+ /**移动速度*/
704
+ speed?: number;
705
+ };
706
+
707
+ /**!------------------标绘相关类型----------------- */
708
+ /**标绘的类型 */
709
+ type MapPlotType = 'point' | 'line' | 'polygon' | 'circle' | 'rect';
710
+ // /**标绘的信息 */
711
+ type MapPlotInfo<T extends MapPlotType = MapPlotType> = SLPCanvas & {
712
+ /**名称 */
713
+ name?: string;
714
+ /**是否隐藏 */
715
+ ifHide?: boolean;
716
+ /**是否是编辑状态 */
717
+ ifEdit?: boolean;
718
+ } & MapPlotDetailType<T>
719
+ /**细分标绘类型 */
720
+ type MapPlotDetailType<T extends MapPlotType> = T extends 'point' ? ({
721
+ /**点标绘 */
722
+ type: 'point',
723
+ latLngs: [[number, number]],
724
+ } & CanvasImage) : T extends "circle" ? {
725
+ /**circle圆形 rect矩形 */
726
+ type: 'circle',
727
+ /**圆心和编辑点*/
728
+ latLngs: [[number, number], [number, number]] | [[number, number]] | [],
729
+ rail?: number
730
+ } : T extends "rect" ? {
731
+ /**circle圆形 rect矩形 */
732
+ type: 'rect',
733
+ latLngs: [[number, number], [number, number]] | [],
734
+ } : {
735
+ type: Exclude<MapPlotType, 'circle' | 'rect' | 'point'>
736
+ /**经纬度集合 */
737
+ latLngs: [number, number][];
738
+ };
739
+
740
+
741
+
742
+
743
+
744
+
745
+
746
+
747
+ /**地图类型定义 */
748
+ declare namespace SLTMap {
749
+ /**雷达 */
750
+ namespace Radar {
751
+ /**雷达的配置(单个雷达也可以是整个绘制类) */
752
+ type Para = MapPluginRadarPara;
753
+
754
+ }
755
+
756
+ /**热力图插件 */
757
+ namespace Heat {
758
+ /**粒子信息 */
759
+ interface Info {
760
+ latlng: [number, number]
761
+ /**权重 */
762
+ weight?: number
763
+ }
764
+ }
765
+ /**粒子插件 */
766
+ namespace Particle {
767
+ /**粒子信息 */
768
+ interface Info extends Line {
769
+ /**canvas上对应的坐标 */
770
+ points?: [number, number][];
771
+ /**计算得到的贝塞尔曲线控制点*/
772
+ curve?: [number, number][];
773
+ /**粒子速度(小于0.1采用百分比)(每帧移动距离) */
774
+ speed?: number;
775
+ /**粒子长度(小于0.1采用百分比) */
776
+ length?: number;
777
+ /**粒子密集度(数字越大绘制粒子的点越多,性能越差,大于1) */
778
+ dense?: number;
779
+ /**当前粒子点位数据 */
780
+ curPoints?: [number, number][];
781
+ /**生命 0-1*/
782
+ age?: number;
783
+ /**所属线段序号 (两个点一条线段,三个点两条线段) */
784
+ index?: number;
785
+ /**粒子的颜色 */
786
+ colorParticle?: string;
787
+ /**显示粒子(只有为false才隐藏) */
788
+ showParticle?: boolean;
789
+ }
790
+ }
791
+
792
+ /**标绘插件 */
793
+ namespace Plot {
794
+ /**标绘类型 point点 line线 polygon多边形 circle圆形 rect矩形*/
795
+ type Type = 'point' | 'line' | 'polygon' | 'circle' | 'rect';
796
+ /**标绘的信息 */
797
+ type Info = MapPlotInfo;
798
+ }
799
+ /**轨迹插件 */
800
+ namespace Track {
801
+ /**地图轨迹信息 */
802
+ type Info<T = any> = MapTrackInfo<T>;
803
+ type PointInfo = MapTrackPointInfo;
804
+ }
805
+ }
806
+
807
+
808
+ /**地图配置项 */
809
+ declare namespace SLPMap {
810
+ /**canvas画布的部分配置 */
811
+ type Canvas = MapCanvasPara;
812
+ /**雷达的配置项 */
813
+ type Radar = MapPluginRadarPara;
814
+
815
+
816
+ /**标绘类的配置项 */
817
+ interface Plot extends Canvas, SLPCanvas { }
818
+ /**热力图类的配置项*/
819
+ interface Heat extends Canvas {
820
+ /**半径 */
821
+ radius?: number,
822
+ /**模糊级数(越大影响范围越大影响系数越小,最好不要超过半径的两倍) */
823
+ blur?: number,
824
+ /**渐变色 */
825
+ gradient?: any,
826
+ /**最小阴影透明度 */
827
+ minOpacity?: number,
828
+ /**渐变色指数 小于10,越大变色越难*/
829
+ gradientIndex?: number,
830
+ /**是否显示等级标识tip */
831
+ ifTip?: boolean,
832
+ /**tip偏移量*/
833
+ tipX?: number,
834
+ /**tip偏移量 */
835
+ tipY?: number,
836
+ }
837
+ /**测距类的配置项 */
838
+ interface Range extends Canvas {
839
+ /**线的颜色(点的边线色) */
840
+ colorLine?: string;
841
+ /**点的填充色 */
842
+ colorArc?: string;
843
+ /**起点的填充色 */
844
+ colorArcStart?: string;
845
+ /**字体的颜色 */
846
+ colorFont?: string;
847
+ /**语言模式 cn中文 en英文*/
848
+ lang?: 'cn' | 'en';
849
+ }
850
+ /**轨迹类的配置项 */
851
+ interface Track extends MapTrackPara { }
852
+ /**风速风向配置 */
853
+ interface Wind extends Canvas {
854
+ /**风速风向雪碧图地址 */
855
+ url: string;
856
+ /**风速风向雪碧图宽高 */
857
+ size: [number, number];
858
+ /**不同层级下的大小 */
859
+ zooMsize: [number, number][];
860
+ }
861
+ interface ArrowLine extends Canvas, SLDMap.ArrowLine {
862
+ /**样式配置 */
863
+ fillColor?: string
864
+ strokeColor?: string
865
+ imgUrl?: string
866
+ }
867
+ }
868
+ /**-----------------------------各插件数据格式---------------------------- */
869
+ declare namespace SLDMap {
870
+ /**风速风向数据类型 */
871
+ interface Wind {
872
+ /**纬度经度 */
873
+ latlng: [number, number]
874
+ /**风速 */
875
+ speed: number;
876
+ /**风向 */
877
+ direction: number;
878
+ }
879
+ /**动态线条 */
880
+ interface ArrowLine {
881
+ /**线宽 */
882
+ lineWidth: number
883
+ /**粒子速度 */
884
+ speed?: number
885
+ partialWidth?: number
886
+ partialHeight?: number
887
+ /**间隙 */
888
+ partialSpace?: number
889
+ /**贝塞尔曲线 */
890
+ isBezier?: boolean
891
+ /**曲率 */
892
+ degree?: number
893
+ }
894
+ }