@mapless/core 0.0.6 → 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.
- package/dist/index.js +4173 -563
- package/dist/types/Mapless/Base.d.ts +4 -0
- package/dist/types/Mapless/Base.d.ts.map +1 -1
- package/dist/types/Mapless/core/manager.d.ts +1 -1
- package/dist/types/Mapless/core/manager.d.ts.map +1 -1
- package/dist/types/Mapless/index.d.ts +5 -0
- package/dist/types/Mapless/index.d.ts.map +1 -1
- package/dist/types/Mapless/layer/FixedRectangleLayer.d.ts +83 -0
- package/dist/types/Mapless/layer/FixedRectangleLayer.d.ts.map +1 -0
- package/dist/types/Mapless/layer/RectangleLayer.d.ts +105 -0
- package/dist/types/Mapless/layer/RectangleLayer.d.ts.map +1 -0
- package/dist/types/Mapless/layer/index.d.ts +4 -0
- package/dist/types/Mapless/layer/index.d.ts.map +1 -0
- package/dist/types/Mapless/layer/types.d.ts +39 -0
- package/dist/types/Mapless/layer/types.d.ts.map +1 -0
- package/dist/types/Mapless/mana/boundary.d.ts +1 -1
- package/dist/types/Mapless/mana/boundary.d.ts.map +1 -1
- package/dist/types/Mapless/mana/cluster.d.ts +5 -5
- package/dist/types/Mapless/mana/cluster.d.ts.map +1 -1
- package/dist/types/Mapless/mana/curve.d.ts +1 -1
- package/dist/types/Mapless/mana/curve.d.ts.map +1 -1
- package/dist/types/Mapless/mana/heatmap.d.ts +1 -0
- package/dist/types/Mapless/mana/heatmap.d.ts.map +1 -1
- package/dist/types/Mapless/mana/imagedata.d.ts +1 -0
- package/dist/types/Mapless/mana/imagedata.d.ts.map +1 -1
- package/dist/types/Mapless/mana/line.d.ts +1 -0
- package/dist/types/Mapless/mana/line.d.ts.map +1 -1
- package/dist/types/Mapless/mana/marker.d.ts +1 -0
- package/dist/types/Mapless/mana/marker.d.ts.map +1 -1
- package/dist/types/Mapless/mana/movable.d.ts +1 -1
- package/dist/types/Mapless/mana/movable.d.ts.map +1 -1
- package/dist/types/Mapless/mana/newstation.d.ts +6 -6
- package/dist/types/Mapless/mana/newstation.d.ts.map +1 -1
- package/dist/types/Mapless/mana/node.d.ts +5 -4
- package/dist/types/Mapless/mana/node.d.ts.map +1 -1
- package/dist/types/Mapless/mana/oldstation.d.ts +1 -1
- package/dist/types/Mapless/mana/oldstation.d.ts.map +1 -1
- package/dist/types/Mapless/mana/polygon.d.ts +1 -0
- package/dist/types/Mapless/mana/polygon.d.ts.map +1 -1
- package/dist/types/Mapless/mana/routes.d.ts +1 -0
- package/dist/types/Mapless/mana/routes.d.ts.map +1 -1
- package/dist/types/Mapless/mana/shape.d.ts +1 -0
- package/dist/types/Mapless/mana/shape.d.ts.map +1 -1
- package/dist/types/Mapless/mana/step.d.ts +1 -0
- package/dist/types/Mapless/mana/step.d.ts.map +1 -1
- package/dist/types/Mapless/mana/track.d.ts +1 -0
- package/dist/types/Mapless/mana/track.d.ts.map +1 -1
- package/dist/types/Mapless/mana-3d/airspace.d.ts +59 -0
- package/dist/types/Mapless/mana-3d/airspace.d.ts.map +1 -0
- package/dist/types/Mapless/mana-3d/elevatedLine.d.ts +37 -0
- package/dist/types/Mapless/mana-3d/elevatedLine.d.ts.map +1 -0
- package/dist/types/Mapless/mana-3d/index.d.ts +6 -0
- package/dist/types/Mapless/mana-3d/index.d.ts.map +1 -0
- package/dist/types/Mapless/mana-3d/mapModel.d.ts +128 -0
- package/dist/types/Mapless/mana-3d/mapModel.d.ts.map +1 -0
- package/dist/types/Mapless/mana-three/basicObject.d.ts +142 -0
- package/dist/types/Mapless/mana-three/basicObject.d.ts.map +1 -0
- package/dist/types/Mapless/mana-three/curve3d.d.ts +83 -0
- package/dist/types/Mapless/mana-three/curve3d.d.ts.map +1 -0
- package/dist/types/Mapless/mana-three/index.d.ts +6 -0
- package/dist/types/Mapless/mana-three/index.d.ts.map +1 -0
- package/dist/types/Mapless/mana-three/line2Manager.d.ts +146 -0
- package/dist/types/Mapless/mana-three/line2Manager.d.ts.map +1 -0
- package/dist/types/Mapless/mana-three/model.d.ts +46 -0
- package/dist/types/Mapless/mana-three/model.d.ts.map +1 -0
- package/dist/types/Mapless/mana-three/three.d.ts +58 -0
- package/dist/types/Mapless/mana-three/three.d.ts.map +1 -0
- package/dist/types/Mapless/path/PathTracker.d.ts +151 -0
- package/dist/types/Mapless/path/PathTracker.d.ts.map +1 -0
- package/dist/types/Mapless/path/attach.d.ts +22 -0
- package/dist/types/Mapless/path/attach.d.ts.map +1 -0
- package/dist/types/Mapless/path/index.d.ts +5 -0
- package/dist/types/Mapless/path/index.d.ts.map +1 -0
- package/dist/types/Mapless/path/path.d.ts +131 -0
- package/dist/types/Mapless/path/path.d.ts.map +1 -0
- package/dist/types/Mapless/path/strategies/base.d.ts +72 -0
- package/dist/types/Mapless/path/strategies/base.d.ts.map +1 -0
- package/dist/types/Mapless/path/strategies/click.d.ts +53 -0
- package/dist/types/Mapless/path/strategies/click.d.ts.map +1 -0
- package/dist/types/Mapless/path/strategies/free.d.ts +45 -0
- package/dist/types/Mapless/path/strategies/free.d.ts.map +1 -0
- package/dist/types/Mapless/path/strategies/index.d.ts +4 -0
- package/dist/types/Mapless/path/strategies/index.d.ts.map +1 -0
- package/dist/types/Mapless/types.d.ts +12 -11
- package/dist/types/Mapless/types.d.ts.map +1 -1
- package/dist/types/Three/MapThree.d.ts +117 -0
- package/dist/types/Three/MapThree.d.ts.map +1 -0
- package/dist/types/Three/types.d.ts +72 -0
- package/dist/types/Three/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +8 -4
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { Point3D } from '../../Three/types';
|
|
2
|
+
import type { Mapless, Maploss } from '..';
|
|
3
|
+
import { Manager } from '../core/manager';
|
|
4
|
+
import type { ManagerOptions } from '../types';
|
|
5
|
+
import type { Path } from '../path/path';
|
|
6
|
+
type Line2ManagerOptions = ManagerOptions;
|
|
7
|
+
export interface Line2Config {
|
|
8
|
+
points: Point3D[];
|
|
9
|
+
color?: number | string;
|
|
10
|
+
opacity?: number;
|
|
11
|
+
linewidth?: number;
|
|
12
|
+
dashed?: boolean;
|
|
13
|
+
dashScale?: number;
|
|
14
|
+
dashSize?: number;
|
|
15
|
+
gapSize?: number;
|
|
16
|
+
}
|
|
17
|
+
declare class Line2Manager extends Manager {
|
|
18
|
+
private mapThree;
|
|
19
|
+
private lines;
|
|
20
|
+
private resizeCallback;
|
|
21
|
+
private mapboxResizeCallback;
|
|
22
|
+
private renderCallback;
|
|
23
|
+
private lastWidth;
|
|
24
|
+
private lastHeight;
|
|
25
|
+
constructor(mapless: Mapless, options?: Line2ManagerOptions);
|
|
26
|
+
private getMapThree;
|
|
27
|
+
private init;
|
|
28
|
+
/**
|
|
29
|
+
* 检查并更新材质分辨率(仅在分辨率变化时更新)
|
|
30
|
+
* 在每次渲染前调用,确保分辨率始终正确
|
|
31
|
+
*/
|
|
32
|
+
private checkAndUpdateResolution;
|
|
33
|
+
/**
|
|
34
|
+
* 更新所有 Line2 的材质分辨率
|
|
35
|
+
* 这是保持固定像素宽度的关键
|
|
36
|
+
*/
|
|
37
|
+
private updateAllMaterialsResolution;
|
|
38
|
+
/**
|
|
39
|
+
* 计算变换参数(使用第一个点作为基准)
|
|
40
|
+
*/
|
|
41
|
+
private calculateTransform;
|
|
42
|
+
/**
|
|
43
|
+
* 将经纬度高度数组转换为 Three.js Vector3 数组
|
|
44
|
+
*/
|
|
45
|
+
private convertPoints;
|
|
46
|
+
/**
|
|
47
|
+
* 创建 Line2 材质
|
|
48
|
+
*/
|
|
49
|
+
private createMaterial;
|
|
50
|
+
/**
|
|
51
|
+
* 添加单个 Line2
|
|
52
|
+
*/
|
|
53
|
+
addLine(id: string, config: Line2Config): void;
|
|
54
|
+
/**
|
|
55
|
+
* 批量添加 Line2
|
|
56
|
+
*/
|
|
57
|
+
addLines(lines: Array<{
|
|
58
|
+
id: string;
|
|
59
|
+
} & Line2Config>): void;
|
|
60
|
+
/**
|
|
61
|
+
* 更新指定 Line2
|
|
62
|
+
*/
|
|
63
|
+
updateLine(id: string, config: Partial<Line2Config>): void;
|
|
64
|
+
/**
|
|
65
|
+
* 批量更新 Line2
|
|
66
|
+
*/
|
|
67
|
+
updateLines(updates: Array<{
|
|
68
|
+
id: string;
|
|
69
|
+
} & Partial<Line2Config>>): void;
|
|
70
|
+
/**
|
|
71
|
+
* 移除指定 Line2
|
|
72
|
+
*/
|
|
73
|
+
removeLine(id: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* 清除所有 Line2
|
|
76
|
+
*/
|
|
77
|
+
clearLines(): void;
|
|
78
|
+
/**
|
|
79
|
+
* 获取线条数量
|
|
80
|
+
*/
|
|
81
|
+
getLineCount(): number;
|
|
82
|
+
/**
|
|
83
|
+
* 检查线条是否存在
|
|
84
|
+
*/
|
|
85
|
+
hasLine(id: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* 获取所有线条 ID
|
|
88
|
+
*/
|
|
89
|
+
getLineIds(): string[];
|
|
90
|
+
/**
|
|
91
|
+
* 设置线条可见性
|
|
92
|
+
*/
|
|
93
|
+
setLineVisible(id: string, visible: boolean): void;
|
|
94
|
+
/**
|
|
95
|
+
* 调整相机视角以适应指定线条(或所有线条)
|
|
96
|
+
* @param lineIds 线条 ID 数组,如果不指定则适应所有线条
|
|
97
|
+
* @param options 可选参数
|
|
98
|
+
*/
|
|
99
|
+
fitBounds(lineIds?: string[], options?: {
|
|
100
|
+
padding?: number | {
|
|
101
|
+
top: number;
|
|
102
|
+
bottom: number;
|
|
103
|
+
left: number;
|
|
104
|
+
right: number;
|
|
105
|
+
};
|
|
106
|
+
bearing?: number;
|
|
107
|
+
pitch?: number;
|
|
108
|
+
duration?: number;
|
|
109
|
+
minZoom?: number;
|
|
110
|
+
}): void;
|
|
111
|
+
/**
|
|
112
|
+
* 生成随机高度(100-500米之间)
|
|
113
|
+
*/
|
|
114
|
+
private generateRandomAltitude;
|
|
115
|
+
/**
|
|
116
|
+
* 从 PathTracker 导入路径数据
|
|
117
|
+
* @param path PathTracker 导出的路径数据
|
|
118
|
+
* @param options 可选的线条配置
|
|
119
|
+
* @returns 导入的线条 ID 数组
|
|
120
|
+
*/
|
|
121
|
+
importPath(path: Path, options?: {
|
|
122
|
+
color?: number | string;
|
|
123
|
+
opacity?: number;
|
|
124
|
+
linewidth?: number;
|
|
125
|
+
dashed?: boolean;
|
|
126
|
+
useSameAltitude?: boolean;
|
|
127
|
+
baseAltitude?: number;
|
|
128
|
+
}): string[];
|
|
129
|
+
/**
|
|
130
|
+
* 从多个 Path 数据批量导入
|
|
131
|
+
*/
|
|
132
|
+
importPaths(paths: Path[], options?: {
|
|
133
|
+
color?: number | string;
|
|
134
|
+
opacity?: number;
|
|
135
|
+
linewidth?: number;
|
|
136
|
+
dashed?: boolean;
|
|
137
|
+
useSameAltitude?: boolean;
|
|
138
|
+
baseAltitude?: number;
|
|
139
|
+
}): string[];
|
|
140
|
+
destroy(): void;
|
|
141
|
+
}
|
|
142
|
+
export default Line2Manager;
|
|
143
|
+
export declare const attachLine2: (mapless: Maploss, name?: string, options?: Line2ManagerOptions) => Line2Manager | undefined;
|
|
144
|
+
export declare const getLine2: (mapless: Maploss, name?: string) => Line2Manager | undefined;
|
|
145
|
+
export declare const detachLine2: (mapless: Maploss, name?: string) => boolean | undefined;
|
|
146
|
+
//# sourceMappingURL=line2Manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line2Manager.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/line2Manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import type { ModelConfig } from '../../Three/types';
|
|
3
|
+
import type { Mapless } from '..';
|
|
4
|
+
import { Manager } from '../core/manager';
|
|
5
|
+
declare class ModelManager extends Manager {
|
|
6
|
+
private mapThree;
|
|
7
|
+
private prefabs;
|
|
8
|
+
private mixers;
|
|
9
|
+
private clock;
|
|
10
|
+
constructor(mapless: Mapless);
|
|
11
|
+
private getMapThree;
|
|
12
|
+
private init;
|
|
13
|
+
private updateAnimations;
|
|
14
|
+
/**
|
|
15
|
+
* 加载3D模型并添加到场景中
|
|
16
|
+
* @param url 模型文件URL
|
|
17
|
+
* @param lngLat 经纬度坐标 [longitude, latitude]
|
|
18
|
+
* @param altitude 高度(米)
|
|
19
|
+
* @param rotation 旋转角度 [x, y, z] 弧度
|
|
20
|
+
* @param scale 缩放比例
|
|
21
|
+
* @param id 模型ID(可选,默认使用URL的hash)
|
|
22
|
+
*/
|
|
23
|
+
load(url: string, lngLat: [number, number], altitude?: number, rotation?: [number, number, number], scale?: number, id?: string): Promise<THREE.Group>;
|
|
24
|
+
/**
|
|
25
|
+
* 更新模型位置(简化的API)
|
|
26
|
+
*/
|
|
27
|
+
updatePosition(lngLat: [number, number], altitude?: number): void;
|
|
28
|
+
private generateModelId;
|
|
29
|
+
addPrefab(id: string, url: string): Promise<void>;
|
|
30
|
+
addModel(id: string, config: ModelConfig): Promise<void>;
|
|
31
|
+
updateModelPosition(id: string, lngLat: [number, number], altitude?: number): void;
|
|
32
|
+
updateModelRotation(id: string, rotation: [number, number, number]): void;
|
|
33
|
+
updateModelScale(id: string, scale: number): void;
|
|
34
|
+
playAnimation(id: string, animationIndex?: number): void;
|
|
35
|
+
stopAnimation(id: string): void;
|
|
36
|
+
removeModel(id: string): void;
|
|
37
|
+
clearModels(): void;
|
|
38
|
+
getModel(id: string): THREE.Group | undefined;
|
|
39
|
+
dispose(): void;
|
|
40
|
+
destroy(): void;
|
|
41
|
+
}
|
|
42
|
+
export default ModelManager;
|
|
43
|
+
export declare const attachModel: (mapless: Mapless | undefined, name?: string) => ModelManager | undefined;
|
|
44
|
+
export declare const getModel: (mapless: Mapless | undefined, name?: string) => ModelManager | undefined;
|
|
45
|
+
export declare const detachModel: (mapless: Mapless | undefined, name?: string) => boolean | undefined;
|
|
46
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,cAAM,YAAa,SAAQ,OAAO;IAChC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,KAAK,CAAkC;gBAEnC,OAAO,EAAE,OAAO;IAM5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,IAAI;IAmBZ,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;;OAQG;IACU,IAAI,CACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,QAAQ,GAAE,MAAU,EACpB,QAAQ,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,EAC9C,KAAK,GAAE,MAAU,EACjB,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IA2FvB;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAU3E,OAAO,CAAC,eAAe;IAWV,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BjD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsG9D,mBAAmB,CACxB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,QAAQ,GAAE,MAAU,GACnB,IAAI;IAsBA,mBAAmB,CACxB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACjC,IAAI;IAiBA,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAejD,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,GAAE,MAAU,GAAG,IAAI;IAsB3D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ7B,WAAW,IAAI,IAAI;IAiBnB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS;IAQ7C,OAAO,IAAI,IAAI;IAgBtB,OAAO,IAAI,IAAI;CAGhB;AAED,eAAe,YAAY,CAAC;AAE5B,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,GAAG,SAAS,EAAE,OAAO,MAAM,6BACrC,CAAC;AAEnC,eAAO,MAAM,QAAQ,GAAI,SAAS,OAAO,GAAG,SAAS,EAAE,OAAO,MAAM,6BAClC,CAAC;AAEnC,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,GAAG,SAAS,EAAE,OAAO,MAAM,wBACnC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import type { MapThree } from '../../Three/MapThree';
|
|
3
|
+
import type { Mapless } from '..';
|
|
4
|
+
import { Manager } from '../core/manager';
|
|
5
|
+
declare class ThreeManager extends Manager {
|
|
6
|
+
private mapThree;
|
|
7
|
+
private modelId;
|
|
8
|
+
private model;
|
|
9
|
+
private mixer;
|
|
10
|
+
private clock;
|
|
11
|
+
private animations;
|
|
12
|
+
private currentAction;
|
|
13
|
+
private modelTransform;
|
|
14
|
+
private userScale;
|
|
15
|
+
constructor(mapless: Mapless);
|
|
16
|
+
private init;
|
|
17
|
+
private updateAnimation;
|
|
18
|
+
getMapThree(): MapThree | null;
|
|
19
|
+
/**
|
|
20
|
+
* 加载3D模型并添加到场景中
|
|
21
|
+
* @returns 返回模型和动画列表
|
|
22
|
+
*/
|
|
23
|
+
loadModel(url: string, lngLat: [number, number], altitude?: number, rotation?: [number, number, number], scale?: number): Promise<{
|
|
24
|
+
model: THREE.Group;
|
|
25
|
+
animations: string[];
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* 获取动画列表
|
|
29
|
+
*/
|
|
30
|
+
getAnimations(): string[];
|
|
31
|
+
/**
|
|
32
|
+
* 播放指定动画
|
|
33
|
+
* @param animationName 动画名称
|
|
34
|
+
*/
|
|
35
|
+
playAnimation(animationName: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* 更新模型位置
|
|
38
|
+
*/
|
|
39
|
+
updatePosition(lngLat: [number, number], altitude?: number): void;
|
|
40
|
+
/**
|
|
41
|
+
* 启用显示
|
|
42
|
+
*/
|
|
43
|
+
enable(): void;
|
|
44
|
+
/**
|
|
45
|
+
* 禁用显示
|
|
46
|
+
*/
|
|
47
|
+
disable(): void;
|
|
48
|
+
/**
|
|
49
|
+
* 释放资源
|
|
50
|
+
*/
|
|
51
|
+
dispose(): void;
|
|
52
|
+
destroy(): void;
|
|
53
|
+
}
|
|
54
|
+
export default ThreeManager;
|
|
55
|
+
export declare const attachThree: (mapless: Mapless | undefined | null, name?: string) => ThreeManager | undefined;
|
|
56
|
+
export declare const getThree: (mapless: Mapless | undefined | null, name?: string) => ThreeManager | undefined;
|
|
57
|
+
export declare const detachThree: (mapless: Mapless | undefined | null, name?: string) => boolean | undefined;
|
|
58
|
+
//# sourceMappingURL=three.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"three.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/three.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,cAAM,YAAa,SAAQ,OAAO;IAChC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,aAAa,CAAsC;IAG3D,OAAO,CAAC,cAAc,CAgBpB;IAEF,OAAO,CAAC,SAAS,CAAK;gBAEV,OAAO,EAAE,OAAO;IAO5B,OAAO,CAAC,IAAI;IAmBZ,OAAO,CAAC,eAAe;IAQhB,WAAW,IAAI,QAAQ,GAAG,IAAI;IAIrC;;;OAGG;IACU,SAAS,CACpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,QAAQ,GAAE,MAAU,EACpB,QAAQ,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,EAC9C,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAuExD;;OAEG;IACI,aAAa,IAAI,MAAM,EAAE;IAIhC;;;OAGG;IACI,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IA0BjD;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAoB3E;;OAEG;IACI,MAAM,IAAI,IAAI;IAOrB;;OAEG;IACI,OAAO,IAAI,IAAI;IAOtB;;OAEG;IACI,OAAO,IAAI,IAAI;IAuBtB,OAAO,IAAI,IAAI;CAGhB;AAED,eAAe,YAAY,CAAC;AAE5B,eAAO,MAAM,WAAW,GACtB,SAAS,OAAO,GAAG,SAAS,GAAG,IAAI,EACnC,OAAO,MAAM,6BACsB,CAAC;AAEtC,eAAO,MAAM,QAAQ,GAAI,SAAS,OAAO,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,MAAM,6BACzC,CAAC;AAEnC,eAAO,MAAM,WAAW,GACtB,SAAS,OAAO,GAAG,SAAS,GAAG,IAAI,EACnC,OAAO,MAAM,wBACwB,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { Mapless } from '../index';
|
|
2
|
+
import type { Path, PathTrackerCallbacks, PathTrackerOptions, PathType } from './path';
|
|
3
|
+
/**
|
|
4
|
+
* PathTracker 路径追踪器
|
|
5
|
+
* 提供可扩展的路径采集功能,支持多种采集策略
|
|
6
|
+
*/
|
|
7
|
+
declare class PathTracker {
|
|
8
|
+
private _mapless;
|
|
9
|
+
private map;
|
|
10
|
+
private options;
|
|
11
|
+
private strategies;
|
|
12
|
+
private currentStrategy;
|
|
13
|
+
private isTracking;
|
|
14
|
+
private currentPath;
|
|
15
|
+
private completedPaths;
|
|
16
|
+
private selectedPathId;
|
|
17
|
+
private sourceId;
|
|
18
|
+
private layerId;
|
|
19
|
+
private clickEnabled;
|
|
20
|
+
private clickHandler;
|
|
21
|
+
callbacks: PathTrackerCallbacks;
|
|
22
|
+
constructor(mapless: Mapless, options?: PathTrackerOptions);
|
|
23
|
+
/**
|
|
24
|
+
* 初始化所有可用策略
|
|
25
|
+
*/
|
|
26
|
+
private initStrategies;
|
|
27
|
+
/**
|
|
28
|
+
* 初始化地图图层
|
|
29
|
+
*/
|
|
30
|
+
private initLayers;
|
|
31
|
+
/**
|
|
32
|
+
* 初始化点击选择功能
|
|
33
|
+
*/
|
|
34
|
+
private initClickSelection;
|
|
35
|
+
/**
|
|
36
|
+
* 更新结果显示图层
|
|
37
|
+
*/
|
|
38
|
+
private updateResultLayer;
|
|
39
|
+
/**
|
|
40
|
+
* 强制重新渲染路径显示图层
|
|
41
|
+
* 用于在修改路径数据后更新地图上的显示
|
|
42
|
+
*/
|
|
43
|
+
refreshDisplay(): void;
|
|
44
|
+
/**
|
|
45
|
+
* 处理策略开始事件
|
|
46
|
+
*/
|
|
47
|
+
private handleStrategyStart;
|
|
48
|
+
/**
|
|
49
|
+
* 处理策略添加点事件
|
|
50
|
+
*/
|
|
51
|
+
private handleStrategyPointAdd;
|
|
52
|
+
/**
|
|
53
|
+
* 处理策略绘制中事件
|
|
54
|
+
*/
|
|
55
|
+
private handleStrategyDrawing;
|
|
56
|
+
/**
|
|
57
|
+
* 处理策略完成事件
|
|
58
|
+
*/
|
|
59
|
+
private handleStrategyComplete;
|
|
60
|
+
/**
|
|
61
|
+
* 处理策略取消事件
|
|
62
|
+
*/
|
|
63
|
+
private handleStrategyCancel;
|
|
64
|
+
/**
|
|
65
|
+
* 触发清除回调
|
|
66
|
+
*/
|
|
67
|
+
private triggerOnClear;
|
|
68
|
+
/**
|
|
69
|
+
* 开始路径采集
|
|
70
|
+
* @param mode 采集模式
|
|
71
|
+
*/
|
|
72
|
+
startTracking(mode?: PathType): void;
|
|
73
|
+
/**
|
|
74
|
+
* 停止路径采集
|
|
75
|
+
*/
|
|
76
|
+
stopTracking(): void;
|
|
77
|
+
/**
|
|
78
|
+
* 取消当前采集
|
|
79
|
+
*/
|
|
80
|
+
cancelTracking(): void;
|
|
81
|
+
/**
|
|
82
|
+
* 清除所有已完成的路径
|
|
83
|
+
*/
|
|
84
|
+
clearPaths(): void;
|
|
85
|
+
/**
|
|
86
|
+
* 获取当前正在采集的路径
|
|
87
|
+
*/
|
|
88
|
+
getCurrentPath(): Path | null;
|
|
89
|
+
/**
|
|
90
|
+
* 获取所有已完成的路径
|
|
91
|
+
*/
|
|
92
|
+
getCompletedPaths(): Path[];
|
|
93
|
+
/**
|
|
94
|
+
* 获取所有路径(包括正在绘制的)
|
|
95
|
+
*/
|
|
96
|
+
getAllPaths(): Path[];
|
|
97
|
+
/**
|
|
98
|
+
* 根据ID获取路径
|
|
99
|
+
*/
|
|
100
|
+
getPathById(id: string): Path | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* 删除指定路径
|
|
103
|
+
*/
|
|
104
|
+
removePath(id: string): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* 删除选中的路径
|
|
107
|
+
*/
|
|
108
|
+
removeSelectedPath(): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* 导入路径
|
|
111
|
+
*/
|
|
112
|
+
importPath(path: Path): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* 更新路径样式
|
|
115
|
+
*/
|
|
116
|
+
updatePathStyle(id: string, style: Partial<Path['style']>): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* 选中路径
|
|
119
|
+
*/
|
|
120
|
+
selectPath(id: string): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* 取消选中路径
|
|
123
|
+
*/
|
|
124
|
+
deselectPath(): void;
|
|
125
|
+
/**
|
|
126
|
+
* 获取选中的路径
|
|
127
|
+
*/
|
|
128
|
+
getSelectedPath(): Path | undefined;
|
|
129
|
+
/**
|
|
130
|
+
* 设置配置选项
|
|
131
|
+
*/
|
|
132
|
+
setOptions(options: Partial<PathTrackerOptions>): void;
|
|
133
|
+
/**
|
|
134
|
+
* 启用点击选择功能
|
|
135
|
+
*/
|
|
136
|
+
enableClickSelection(): void;
|
|
137
|
+
/**
|
|
138
|
+
* 禁用点击选择功能
|
|
139
|
+
*/
|
|
140
|
+
disableClickSelection(): void;
|
|
141
|
+
/**
|
|
142
|
+
* 检查是否正在追踪
|
|
143
|
+
*/
|
|
144
|
+
isActive(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* 销毁路径追踪器
|
|
147
|
+
*/
|
|
148
|
+
destroy(): void;
|
|
149
|
+
}
|
|
150
|
+
export default PathTracker;
|
|
151
|
+
//# sourceMappingURL=PathTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathTracker.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/path/PathTracker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAGV,IAAI,EAGJ,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACT,MAAM,QAAQ,CAAC;AAGhB;;;GAGG;AACH,cAAM,WAAW;IAGf,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,UAAU,CAAyC;IAC3D,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAuB;IAG7C,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,OAAO,CAAM;IAGrB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAsD;IAGnE,SAAS,EAAE,oBAAoB,CAAM;gBAEhC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAY1D;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA0BlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+B1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkDzB;;;OAGG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;;OAGG;IACH,aAAa,CAAC,IAAI,GAAE,QAAkB,GAAG,IAAI;IA8B7C;;OAEG;IACH,YAAY,IAAI,IAAI;IAuCpB;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,cAAc,IAAI,IAAI,GAAG,IAAI;IAI7B;;OAEG;IACH,iBAAiB,IAAI,IAAI,EAAE;IAI3B;;OAEG;IACH,WAAW,IAAI,IAAI,EAAE;IAgBrB;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIzC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAa/B;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAO7B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAqB/B;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO;IAUnE;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAY/B;;OAEG;IACH,YAAY,IAAI,IAAI;IAYpB;;OAEG;IACH,eAAe,IAAI,IAAI,GAAG,SAAS;IAOnC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAqBtD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAK7B;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,OAAO,IAAI,IAAI;CA6BhB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import PathTracker from './PathTracker';
|
|
2
|
+
import type { Mapless } from '../index';
|
|
3
|
+
import type { PathTrackerOptions } from './path';
|
|
4
|
+
/**
|
|
5
|
+
* 附加 PathTracker 到 Mapless 实例
|
|
6
|
+
* @param mapless Mapless 实例
|
|
7
|
+
* @param options 配置选项
|
|
8
|
+
* @returns PathTracker 实例
|
|
9
|
+
*/
|
|
10
|
+
export declare function attachPathTracker(mapless: Mapless, options?: PathTrackerOptions): PathTracker | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* 获取已附加的 PathTracker 实例
|
|
13
|
+
* @param mapless Mapless 实例
|
|
14
|
+
* @returns PathTracker 实例或 undefined
|
|
15
|
+
*/
|
|
16
|
+
export declare function getPathTracker(mapless: Mapless): PathTracker | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* 分离 PathTracker 从 Mapless 实例
|
|
19
|
+
* @param mapless Mapless 实例
|
|
20
|
+
*/
|
|
21
|
+
export declare function detachPathTracker(mapless: Mapless): void;
|
|
22
|
+
//# sourceMappingURL=attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/path/attach.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAOjD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,GAAG,SAAS,CAiBzB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,GACf,WAAW,GAAG,SAAS,CAEzB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAMxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/path/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 路径点数据结构
|
|
3
|
+
*/
|
|
4
|
+
export interface PathPoint {
|
|
5
|
+
/** 经度 */
|
|
6
|
+
lng: number;
|
|
7
|
+
/** 纬度 */
|
|
8
|
+
lat: number;
|
|
9
|
+
/** 可选的附加数据 */
|
|
10
|
+
properties?: Record<string, unknown>;
|
|
11
|
+
/** 时间戳 */
|
|
12
|
+
timestamp?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 路径段 - 一条连续的线段
|
|
16
|
+
*/
|
|
17
|
+
export interface PathSegment {
|
|
18
|
+
/** 路径点集合 */
|
|
19
|
+
points: PathPoint[];
|
|
20
|
+
/** 路径段样式(可选,覆盖全局样式) */
|
|
21
|
+
style?: PathStyle;
|
|
22
|
+
/** 内部标记:该段是否已完成(仅多段模式使用) */
|
|
23
|
+
_completed?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 路径数据结构 - 支持多段式路径
|
|
27
|
+
*/
|
|
28
|
+
export interface Path {
|
|
29
|
+
/** 唯一标识 */
|
|
30
|
+
id: string;
|
|
31
|
+
/** 路径段集合 */
|
|
32
|
+
segments: PathSegment[];
|
|
33
|
+
/** 路径类型 */
|
|
34
|
+
type: PathType;
|
|
35
|
+
/** 路径样式配置 */
|
|
36
|
+
style?: PathStyle;
|
|
37
|
+
/** 用户自定义数据 */
|
|
38
|
+
metadata?: Record<string, unknown>;
|
|
39
|
+
/** 是否被选中 */
|
|
40
|
+
selected?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 路径采集模式
|
|
44
|
+
*/
|
|
45
|
+
export type PathType = 'click' | 'free';
|
|
46
|
+
/**
|
|
47
|
+
* 路径样式配置
|
|
48
|
+
*/
|
|
49
|
+
export interface PathStyle {
|
|
50
|
+
/** 线条颜色 */
|
|
51
|
+
color?: string;
|
|
52
|
+
/** 线条宽度 */
|
|
53
|
+
width?: number;
|
|
54
|
+
/** 透明度 */
|
|
55
|
+
opacity?: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 路径采集配置
|
|
59
|
+
*/
|
|
60
|
+
export interface PathTrackerOptions {
|
|
61
|
+
/** 最大点数量(用于自由绘制模式) */
|
|
62
|
+
maxPoints?: number;
|
|
63
|
+
/** 最小点间距(米,用于自由绘制模式节流) */
|
|
64
|
+
minPointDistance?: number;
|
|
65
|
+
/** 默认样式 */
|
|
66
|
+
defaultStyle?: PathStyle;
|
|
67
|
+
/** 是否在绘制时显示预览 */
|
|
68
|
+
showPreview?: boolean;
|
|
69
|
+
/** 是否自动闭合路径 */
|
|
70
|
+
autoClose?: boolean;
|
|
71
|
+
/** 是否启用点击选择功能 */
|
|
72
|
+
enableClickSelection?: boolean;
|
|
73
|
+
/** 是否启用多段模式(每次完成创建新段) */
|
|
74
|
+
multiSegment?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 路径事件回调类型
|
|
78
|
+
*/
|
|
79
|
+
export interface PathTrackerCallbacks {
|
|
80
|
+
/** 开始绘制时触发 */
|
|
81
|
+
onStart?: (path: Path) => void;
|
|
82
|
+
/** 添加点时触发 */
|
|
83
|
+
onPointAdd?: (path: Path, point: PathPoint) => void;
|
|
84
|
+
/** 绘制过程中触发(自由绘制模式频繁触发) */
|
|
85
|
+
onDrawing?: (path: Path) => void;
|
|
86
|
+
/** 完成绘制时触发(在多段模式下,每段完成时触发) */
|
|
87
|
+
onComplete?: (path: Path) => void;
|
|
88
|
+
/** 整个路径完成时触发(仅多段模式) */
|
|
89
|
+
onAllComplete?: (path: Path) => void;
|
|
90
|
+
/** 路径列表需要更新时触发(包括正在绘制的路径) */
|
|
91
|
+
onListUpdate?: () => void;
|
|
92
|
+
/** 取消绘制时触发 */
|
|
93
|
+
onCancel?: () => void;
|
|
94
|
+
/** 清除路径时触发 */
|
|
95
|
+
onClear?: () => void;
|
|
96
|
+
/** 路径被选中时触发 */
|
|
97
|
+
onSelect?: (path: Path | null) => void;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 内部策略回调接口(PathTracker 使用)
|
|
101
|
+
* 与用户回调接口不同,这是策略层 → PathTracker 层的通信
|
|
102
|
+
*/
|
|
103
|
+
export interface InternalStrategyCallbacks {
|
|
104
|
+
onStart?: () => void;
|
|
105
|
+
onPointAdd?: (point: PathPoint) => void;
|
|
106
|
+
onDrawing?: () => void;
|
|
107
|
+
onComplete?: (segment: PathSegment) => void;
|
|
108
|
+
onCancel?: () => void;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 采集策略接口
|
|
112
|
+
*/
|
|
113
|
+
export interface IPathCollectionStrategy {
|
|
114
|
+
/** 策略名称 */
|
|
115
|
+
readonly name: string;
|
|
116
|
+
/** 初始化策略 */
|
|
117
|
+
initialize(map: mapboxgl.Map, callbacks: InternalStrategyCallbacks): void;
|
|
118
|
+
/** 开始采集 */
|
|
119
|
+
start(): void;
|
|
120
|
+
/** 停止采集 */
|
|
121
|
+
stop(): void;
|
|
122
|
+
/** 清理资源 */
|
|
123
|
+
destroy(): void;
|
|
124
|
+
/** 获取当前采集的点 */
|
|
125
|
+
getPoints(): PathPoint[];
|
|
126
|
+
/** 手动添加点(用于点击模式) */
|
|
127
|
+
addPoint?(point: PathPoint): void;
|
|
128
|
+
/** 完成采集 */
|
|
129
|
+
complete?(): void;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/path/path.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,uBAAuB;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,WAAW;IACX,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW;IACX,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,iBAAiB;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc;IACd,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,aAAa;IACb,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACpD,0BAA0B;IAC1B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,uBAAuB;IACvB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC1E,WAAW;IACX,KAAK,IAAI,IAAI,CAAC;IACd,WAAW;IACX,IAAI,IAAI,IAAI,CAAC;IACb,WAAW;IACX,OAAO,IAAI,IAAI,CAAC;IAChB,eAAe;IACf,SAAS,IAAI,SAAS,EAAE,CAAC;IACzB,oBAAoB;IACpB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,WAAW;IACX,QAAQ,CAAC,IAAI,IAAI,CAAC;CACnB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { IPathCollectionStrategy, InternalStrategyCallbacks, PathPoint, PathSegment } from '../path';
|
|
2
|
+
/**
|
|
3
|
+
* 采集策略基类
|
|
4
|
+
* 提供公共方法和属性,子类实现具体逻辑
|
|
5
|
+
*/
|
|
6
|
+
export default abstract class PathCollectionStrategy implements IPathCollectionStrategy {
|
|
7
|
+
protected map: mapboxgl.Map | null;
|
|
8
|
+
protected callbacks: InternalStrategyCallbacks;
|
|
9
|
+
protected isActive: boolean;
|
|
10
|
+
protected points: PathPoint[];
|
|
11
|
+
/**
|
|
12
|
+
* 策略名称,子类必须实现
|
|
13
|
+
*/
|
|
14
|
+
abstract readonly name: string;
|
|
15
|
+
/**
|
|
16
|
+
* 初始化策略
|
|
17
|
+
*/
|
|
18
|
+
initialize(map: mapboxgl.Map, callbacks: InternalStrategyCallbacks): void;
|
|
19
|
+
/**
|
|
20
|
+
* 开始采集
|
|
21
|
+
*/
|
|
22
|
+
start(): void;
|
|
23
|
+
/**
|
|
24
|
+
* 停止采集
|
|
25
|
+
*/
|
|
26
|
+
stop(): void;
|
|
27
|
+
/**
|
|
28
|
+
* 清理资源
|
|
29
|
+
*/
|
|
30
|
+
destroy(): void;
|
|
31
|
+
/**
|
|
32
|
+
* 获取当前采集的点
|
|
33
|
+
*/
|
|
34
|
+
getPoints(): PathPoint[];
|
|
35
|
+
/**
|
|
36
|
+
* 清空点集合
|
|
37
|
+
*/
|
|
38
|
+
protected clearPoints(): void;
|
|
39
|
+
/**
|
|
40
|
+
* 添加点到集合
|
|
41
|
+
*/
|
|
42
|
+
addPoint(point: PathPoint): void;
|
|
43
|
+
/**
|
|
44
|
+
* 获取当前采集的所有点
|
|
45
|
+
*/
|
|
46
|
+
getCurrentSegment(): PathSegment;
|
|
47
|
+
/**
|
|
48
|
+
* 设置事件监听器,子类实现
|
|
49
|
+
*/
|
|
50
|
+
protected abstract setupEventListeners(): void;
|
|
51
|
+
/**
|
|
52
|
+
* 移除事件监听器,子类实现
|
|
53
|
+
*/
|
|
54
|
+
protected abstract removeEventListeners(): void;
|
|
55
|
+
/**
|
|
56
|
+
* 开始采集时的钩子,子类可重写
|
|
57
|
+
*/
|
|
58
|
+
protected onStartCollection(): void;
|
|
59
|
+
/**
|
|
60
|
+
* 停止采集时的钩子,子类可重写
|
|
61
|
+
*/
|
|
62
|
+
protected onStopCollection(): void;
|
|
63
|
+
/**
|
|
64
|
+
* 计算两点之间的距离(米)
|
|
65
|
+
*/
|
|
66
|
+
protected calculateDistance(point1: PathPoint, point2: PathPoint): number;
|
|
67
|
+
/**
|
|
68
|
+
* 从鼠标事件提取路径点
|
|
69
|
+
*/
|
|
70
|
+
protected extractPointFromEvent(e: mapboxgl.MapMouseEvent): PathPoint;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/Mapless/path/strategies/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,sBAC5B,YAAW,uBAAuB;IAElC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAQ;IAC1C,SAAS,CAAC,SAAS,EAAE,yBAAyB,CAAM;IACpD,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAM;IAEnC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,yBAAyB,GAAG,IAAI;IAOzE;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,SAAS,IAAI,SAAS,EAAE;IAIxB;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQvC;;OAEG;IACH,iBAAiB,IAAI,WAAW;IAIhC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,IAAI;IAE9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,IAAI;IAE/C;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAIlC;;OAEG;IACH,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,GAChB,MAAM;IAST;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAC7B,CAAC,EAAE,QAAQ,CAAC,aAAa,GACxB,SAAS;CAOb"}
|