@baidumap/mapv-three 1.4.0 → 1.4.1
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/README.md +3 -3
- package/dist/assets/textures/weather/thunder.jpg +0 -0
- package/dist/assets/wasm/lanelet.wasm +0 -0
- package/dist/assets/workers/{BaiduVectorParser.worker-f7fcc351.js → BaiduVectorParser.worker-486240e8.js} +82 -85
- package/dist/assets/workers/{CesiumTerrainParser.worker-fcae0cc9.js → CesiumTerrainParser.worker-ba35b937.js} +108 -113
- package/dist/assets/workers/{MVTParser.worker-0dd27c39.js → MVTParser.worker-bb80e3b4.js} +9 -14
- package/dist/devtool/panel.js +9 -0
- package/dist/mapvthree.module.js +40003 -38856
- package/dist/mapvthree.umd.js +5 -5
- package/dist/types/Internal.d.ts +1 -0
- package/dist/types/adapters/bmap/Icon.d.ts +18 -0
- package/dist/types/adapters/bmap/InfoWindow.d.ts +124 -0
- package/dist/types/adapters/bmap/Label.d.ts +58 -0
- package/dist/types/adapters/bmap/Map.d.ts +124 -0
- package/dist/types/adapters/bmap/Marker.d.ts +28 -0
- package/dist/types/adapters/bmap/Overlay.d.ts +18 -0
- package/dist/types/adapters/bmap/Pixel.d.ts +1 -0
- package/dist/types/adapters/bmap/Point.d.ts +8 -0
- package/dist/types/adapters/bmap/Size.d.ts +8 -0
- package/dist/types/adapters/bmap/index.d.ts +8 -0
- package/dist/types/adapters/index.d.ts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.open.d.ts +1 -0
- package/dist/types/threejs/geometries/text/ScreenTextGeometry.d.ts +15 -0
- package/dist/types/threejs/materials/effects/LightningBillboardMaterial.d.ts +3 -0
- package/dist/types/threejs/materials/text/ScreenTextMaterial.d.ts +25 -0
- package/dist/types/threejs/objects/line/FatLineInternal.d.ts +4 -0
- package/dist/types/threejs/objects/point/Label.d.ts +10 -1
- package/dist/types/threejs/objects/text/ScreenText.d.ts +273 -0
- package/dist/types/threejs/objects/text/font-atlas-manager.d.ts +10 -2
- package/dist/types/threemap/Engine.d.ts +17 -4
- package/dist/types/threemap/engine/Controller.d.ts +141 -0
- package/dist/types/threemap/engine/Map.d.ts +14 -2
- package/dist/types/threemap/engine/event/EntityProxy.d.ts +1 -0
- package/dist/types/threemap/engine/map/BlankMap.d.ts +1 -1
- package/dist/types/threemap/engine/map/BlankMap3DControl.d.ts +4 -1
- package/dist/types/{threejs → threemap/engine/map}/controls/DraggingMovementAggregator.d.ts +3 -0
- package/dist/types/{threejs → threemap/engine/map}/controls/MapControl3D.d.ts +19 -2
- package/dist/types/{threejs → threemap/engine/map}/controls/PointerMovementAggregator.d.ts +3 -0
- package/dist/types/threemap/engine/map/earth/Earth.d.ts +1 -0
- package/dist/types/threemap/engine/rendering/Collision.d.ts +5 -0
- package/dist/types/threemap/engine/rendering/Label.d.ts +13 -0
- package/dist/types/threemap/mapView/parser/baidulane/constants/index.d.ts +2 -2
- package/dist/types/threemap/mapView/parser/baidulane/core/MaterialFactory.d.ts +1 -1
- package/dist/types/threemap/mapView/parser/baidulane/generators/LabelLine.d.ts +11 -4
- package/dist/types/threemap/mapView/parser/baidulane/utils/coordinate.d.ts +1 -1
- package/dist/types/threemap/mapView/surface/strategy/FastTileLoaderStrategy.d.ts +16 -0
- package/dist/types/threemap/mapView/tileProvider/vector/BaiduVectorTileProvider.d.ts +3 -0
- package/dist/types/threemap/natural/DynamicWeather.d.ts +2 -0
- package/dist/types/threemap/natural/Thunderstorm.d.ts +23 -8
- package/dist/types/threemap/overlay/Marker.d.ts +3 -0
- package/dist/types/threemap/services/autoComplete/AutoComplete.d.ts +1 -1
- package/dist/types/threemap/services/boundary/Boundary.d.ts +3 -3
- package/dist/types/threemap/services/common/baiduRequest.d.ts +1 -1
- package/dist/types/threemap/services/configs.d.ts +2 -2
- package/dist/types/threemap/services/district/DistrictLayer.d.ts +3 -3
- package/dist/types/threemap/services/geocoder/Geocoder.d.ts +5 -5
- package/dist/types/threemap/services/localSearch/LocalSearch.d.ts +5 -5
- package/dist/types/threemap/services/routeSearch/DrivingRoute.d.ts +2 -2
- package/dist/types/threemap/services/routeSearch/TransitRoute.d.ts +3 -3
- package/package.json +1 -1
- /package/dist/types/{threejs → threemap/engine/map}/controls/MapControl.d.ts +0 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 屏幕文字对象, 支持沿线绘制文字
|
|
3
|
+
*
|
|
4
|
+
*
|
|
5
|
+
* @category Objects
|
|
6
|
+
*/
|
|
7
|
+
export class ScreenText extends GeoMesh {
|
|
8
|
+
/**
|
|
9
|
+
* 构造函数
|
|
10
|
+
* @param {Object} parameters 配置参数
|
|
11
|
+
* @param {number} [parameters.fontSize=26] 字体大小
|
|
12
|
+
* @param {string} [parameters.fontFamily='Arial'] 字体族
|
|
13
|
+
* @param {string} [parameters.color='#ffffff'] 文字颜色
|
|
14
|
+
* @param {number} [parameters.opacity=1] 不透明度
|
|
15
|
+
* @param {number} [parameters.strokeWidth=0] 描边宽度
|
|
16
|
+
* @param {string} [parameters.strokeColor='#000000'] 描边颜色
|
|
17
|
+
*/
|
|
18
|
+
constructor(parameters?: {
|
|
19
|
+
fontSize?: number | undefined;
|
|
20
|
+
fontFamily?: string | undefined;
|
|
21
|
+
color?: string | undefined;
|
|
22
|
+
opacity?: number | undefined;
|
|
23
|
+
strokeWidth?: number | undefined;
|
|
24
|
+
strokeColor?: string | undefined;
|
|
25
|
+
});
|
|
26
|
+
/** @protected */ protected parameters: {
|
|
27
|
+
fontSize: number;
|
|
28
|
+
fontFamily: string;
|
|
29
|
+
color: string;
|
|
30
|
+
opacity: number;
|
|
31
|
+
strokeWidth: number;
|
|
32
|
+
strokeColor: string;
|
|
33
|
+
fontWeight: string;
|
|
34
|
+
keepUpright: boolean;
|
|
35
|
+
textMaxAngle: number;
|
|
36
|
+
clippingBuffer: number;
|
|
37
|
+
debug: boolean;
|
|
38
|
+
};
|
|
39
|
+
/** @protected */ protected fontAtlasManager: any;
|
|
40
|
+
/** @protected */ protected atlasTexture: any;
|
|
41
|
+
frustumCulled: boolean;
|
|
42
|
+
matrixAutoUpdate: boolean;
|
|
43
|
+
renderOrder: number;
|
|
44
|
+
FlipState: {
|
|
45
|
+
unknown: number;
|
|
46
|
+
flipRequired: number;
|
|
47
|
+
flipNotRequired: number;
|
|
48
|
+
};
|
|
49
|
+
_flipStates: Map<any, any>;
|
|
50
|
+
_textsAlongLinesData: any[];
|
|
51
|
+
_tempMatrix4: any;
|
|
52
|
+
_tempVector2: any;
|
|
53
|
+
_tempVector4: any;
|
|
54
|
+
_tempVector4_2: any;
|
|
55
|
+
_measureCanvas: HTMLCanvasElement;
|
|
56
|
+
_measureCtx: CanvasRenderingContext2D | null;
|
|
57
|
+
_emptyFrameCount: number;
|
|
58
|
+
_emptyFrameThreshold: number;
|
|
59
|
+
_placeTextCache: Map<any, any>;
|
|
60
|
+
_shapeCache: LRUCache;
|
|
61
|
+
_debugPolyline: Polyline | null;
|
|
62
|
+
_debugNormalPoints: SimplePoint | null;
|
|
63
|
+
_debugAnchorPoints: SimplePoint | null;
|
|
64
|
+
geometry: ScreenTextGeometry | undefined;
|
|
65
|
+
material: ScreenTextMaterial | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* 初始化调试对象
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
private _initDebugObjects;
|
|
71
|
+
/**
|
|
72
|
+
* 碰撞检测(返回屏幕坐标的字符包围盒)
|
|
73
|
+
* @param {Object} data 数据项(来自 dataSource.userData)
|
|
74
|
+
* @returns {Object|null} 包围盒信息 {chars, isProjected, tolerance}
|
|
75
|
+
*/
|
|
76
|
+
collisionTest(data: Object): Object | null;
|
|
77
|
+
/**
|
|
78
|
+
* 更新分辨率
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
private _updateResolution;
|
|
82
|
+
/**
|
|
83
|
+
* 初始化字体图集管理器
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
private _initFontAtlas;
|
|
87
|
+
/**
|
|
88
|
+
* 定义代理属性
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
private _defineProxyProperties;
|
|
92
|
+
/**
|
|
93
|
+
* 设置文字数据(核心API)
|
|
94
|
+
* @param {Array<Object>} chars 字符数据数组(注意:每个是单个字符!)
|
|
95
|
+
* @param {number} chars[].x 屏幕X坐标(像素)
|
|
96
|
+
* @param {number} chars[].y 屏幕Y坐标(像素)
|
|
97
|
+
* @param {string} chars[].char 单个字符
|
|
98
|
+
* @param {number} [chars[].rotation=0] 旋转角度(弧度)
|
|
99
|
+
* @param {number} [chars[].size] 字符大小(可选,默认使用fontSize)
|
|
100
|
+
* @example
|
|
101
|
+
* ```javascript
|
|
102
|
+
* screenText.setTexts([
|
|
103
|
+
* { x: 100, y: 100, char: '建', rotation: 0, size: 26 },
|
|
104
|
+
* { x: 126, y: 100, char: '国', rotation: 0, size: 26 },
|
|
105
|
+
* { x: 152, y: 100, char: '门', rotation: 0, size: 26 }
|
|
106
|
+
* ]);
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
setTexts(chars: Array<Object>): void;
|
|
110
|
+
_lastCharCount: number | undefined;
|
|
111
|
+
/**
|
|
112
|
+
* 更新字体图集
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
private _updateFontAtlas;
|
|
116
|
+
/**
|
|
117
|
+
* 沿线绘制单组文字(向后兼容)
|
|
118
|
+
* @param {string} text 要显示的文字
|
|
119
|
+
* @param {Array<Array<number>>} line 世界坐标线段数组 [[x,y,z], [x,y,z], ...]
|
|
120
|
+
* @param {Array<number>} anchor 锚点世界坐标 [x,y,z]
|
|
121
|
+
* @example
|
|
122
|
+
* ```javascript
|
|
123
|
+
* screenText.setTextAlongLine('建国门南大街', line, [x, y, z]);
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
setTextAlongLine(text: string, line: Array<Array<number>>, anchor: Array<number>): void;
|
|
127
|
+
/**
|
|
128
|
+
* 沿线绘制多组文字
|
|
129
|
+
* @param {Array<Object>} textsData 多组文字数据
|
|
130
|
+
* @param {string} textsData[].text 要显示的文字
|
|
131
|
+
* @param {Array<Array<number>>} textsData[].line 世界坐标线段数组
|
|
132
|
+
* @param {Array<number>} textsData[].anchor 锚点世界坐标
|
|
133
|
+
* @example
|
|
134
|
+
* ```javascript
|
|
135
|
+
* screenText.setTextsAlongLines([
|
|
136
|
+
* { text: '建国门南大街', line: line1, anchor: anchor1 },
|
|
137
|
+
* { text: '西便门大街', line: line2, anchor: anchor2 }
|
|
138
|
+
* ]);
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
setTextsAlongLines(textsData: Array<Object>): void;
|
|
142
|
+
/**
|
|
143
|
+
* 渲染前更新
|
|
144
|
+
* @internal
|
|
145
|
+
*/
|
|
146
|
+
onBeforeScenePrepareRenderHook(renderer: any, scene: any, camera: any): void;
|
|
147
|
+
/**
|
|
148
|
+
* 更新多组沿线文字(新方法)
|
|
149
|
+
* @private
|
|
150
|
+
*/
|
|
151
|
+
private _updateTextsAlongLines;
|
|
152
|
+
/**
|
|
153
|
+
* 放置单组沿线文字(重构后的核心方法)
|
|
154
|
+
* @private
|
|
155
|
+
* @returns {Array} 字符数组,如果过滤则返回空数组
|
|
156
|
+
*/
|
|
157
|
+
private _placeTextAlongLine;
|
|
158
|
+
_initializedGroups: Set<any> | undefined;
|
|
159
|
+
/**
|
|
160
|
+
* 解析颜色为RGBA数组(归一化到0-1)
|
|
161
|
+
* @private
|
|
162
|
+
* @param {string|Array} color - 颜色值(支持多种格式)
|
|
163
|
+
* @param {string} defaultColor - 默认颜色(十六进制)
|
|
164
|
+
* @returns {Array} RGBA数组 [r, g, b, a](0-1范围)
|
|
165
|
+
*/
|
|
166
|
+
private _parseColorToRgba;
|
|
167
|
+
/**
|
|
168
|
+
* 文字形状化(计算每个字符的位置和宽度)
|
|
169
|
+
* @private
|
|
170
|
+
*/
|
|
171
|
+
private _shapeText;
|
|
172
|
+
/**
|
|
173
|
+
* 计算两点距离
|
|
174
|
+
* @private
|
|
175
|
+
*/
|
|
176
|
+
private _distance;
|
|
177
|
+
/**
|
|
178
|
+
* 将世界坐标线段转换为屏幕坐标
|
|
179
|
+
* 包含近平面裁剪处理(处理 w < 0 的情况)
|
|
180
|
+
* @private
|
|
181
|
+
*/
|
|
182
|
+
private _lineToScreenCoords;
|
|
183
|
+
/**
|
|
184
|
+
* 世界坐标转屏幕坐标
|
|
185
|
+
* @private
|
|
186
|
+
*/
|
|
187
|
+
private _worldToScreen;
|
|
188
|
+
/**
|
|
189
|
+
* 查找锚点所在的线段
|
|
190
|
+
* @private
|
|
191
|
+
*/
|
|
192
|
+
private _findSegmentForAnchor;
|
|
193
|
+
/**
|
|
194
|
+
* 计算点到线段的最短距离
|
|
195
|
+
* @private
|
|
196
|
+
*/
|
|
197
|
+
private _pointToSegmentDistance;
|
|
198
|
+
/**
|
|
199
|
+
* 判断锚点是否在屏幕可见区域内
|
|
200
|
+
* @private
|
|
201
|
+
*/
|
|
202
|
+
private _isAnchorVisible;
|
|
203
|
+
/**
|
|
204
|
+
* 判断点是否在相机后面(w <= 0)
|
|
205
|
+
* @private
|
|
206
|
+
*/
|
|
207
|
+
private _isPointBehindCamera;
|
|
208
|
+
/**
|
|
209
|
+
* 判断是否在翻转保持范围内
|
|
210
|
+
* @private
|
|
211
|
+
*/
|
|
212
|
+
private _isInFlipRetainRange;
|
|
213
|
+
/**
|
|
214
|
+
* 判断是否需要改变朝向(Mapbox 完整算法)
|
|
215
|
+
* @private
|
|
216
|
+
*/
|
|
217
|
+
private _requiresOrientationChange;
|
|
218
|
+
/**
|
|
219
|
+
* 沿线放置字符
|
|
220
|
+
* @private
|
|
221
|
+
*/
|
|
222
|
+
private _placeGlyphAlongLine;
|
|
223
|
+
_placeGlyphDebugDone: boolean | undefined;
|
|
224
|
+
/**
|
|
225
|
+
* 更新调试对象的数据
|
|
226
|
+
* @private
|
|
227
|
+
*/
|
|
228
|
+
private _updateDebugObjects;
|
|
229
|
+
/**
|
|
230
|
+
* 显示 Atlas 纹理调试面板
|
|
231
|
+
* @param {Object} options 配置选项
|
|
232
|
+
* @param {number} [options.size=300] 显示尺寸(像素)
|
|
233
|
+
* @param {string} [options.position='top-right'] 位置:'top-left', 'top-right', 'bottom-left', 'bottom-right'
|
|
234
|
+
* @param {boolean} [options.autoUpdate=true] 是否自动更新
|
|
235
|
+
* @example
|
|
236
|
+
* ```javascript
|
|
237
|
+
* screenText.showAtlasDebug({ size: 400, position: 'bottom-right' });
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
showAtlasDebug(options?: {
|
|
241
|
+
size?: number | undefined;
|
|
242
|
+
position?: string | undefined;
|
|
243
|
+
autoUpdate?: boolean | undefined;
|
|
244
|
+
}): this;
|
|
245
|
+
_debugPanel: HTMLDivElement | null | undefined;
|
|
246
|
+
_debugUpdateInterval: number | null | undefined;
|
|
247
|
+
/**
|
|
248
|
+
* 隐藏 Atlas 纹理调试面板
|
|
249
|
+
*/
|
|
250
|
+
hideAtlasDebug(): this;
|
|
251
|
+
/**
|
|
252
|
+
* 获取 Atlas 纹理(用于自定义调试)
|
|
253
|
+
* @returns {DataTexture} Atlas texture
|
|
254
|
+
*/
|
|
255
|
+
getAtlasTexture(): DataTexture;
|
|
256
|
+
/**
|
|
257
|
+
* 获取字体图集管理器
|
|
258
|
+
* @returns {FontAtlasManager} Font atlas manager
|
|
259
|
+
*/
|
|
260
|
+
getFontAtlasManager(): FontAtlasManager;
|
|
261
|
+
/**
|
|
262
|
+
* 获取字符集合(从实际的atlas mapping中提取)
|
|
263
|
+
* @returns {Set} 字符集合
|
|
264
|
+
*/
|
|
265
|
+
getCharacterSet(): Set<any>;
|
|
266
|
+
}
|
|
267
|
+
import { GeoMesh } from '../GeoMesh';
|
|
268
|
+
import { LRUCache } from '../../../util/LRUCache';
|
|
269
|
+
import { Polyline } from '../line/Polyline';
|
|
270
|
+
import { SimplePoint } from '../point/SimplePoint';
|
|
271
|
+
import { ScreenTextGeometry } from '../../geometries/text/ScreenTextGeometry';
|
|
272
|
+
import { ScreenTextMaterial } from '../../materials/text/ScreenTextMaterial';
|
|
273
|
+
import { FontAtlasManager } from './font-atlas-manager';
|
|
@@ -2,20 +2,28 @@ export class FontAtlasManager {
|
|
|
2
2
|
props: {};
|
|
3
3
|
_entry: {};
|
|
4
4
|
_textureData: Uint8Array<ArrayBuffer>;
|
|
5
|
+
_currentWidth: number;
|
|
6
|
+
_currentHeight: number;
|
|
5
7
|
_xOffset: number;
|
|
6
8
|
_yOffset: number;
|
|
7
9
|
_mapping: {};
|
|
8
10
|
_canvasHeight: number;
|
|
9
|
-
_oldMapping: {};
|
|
10
11
|
/** @private */ private _atlas;
|
|
11
12
|
_ctx: any;
|
|
13
|
+
_version: number;
|
|
12
14
|
get atlas(): any;
|
|
13
15
|
get mapping(): any;
|
|
14
16
|
setProps(props?: {}): void;
|
|
15
17
|
setPropsAsync(scheduler: any, props?: {}, batchSize?: number): Promise<any>;
|
|
16
18
|
_prepareFontAtlas(): void;
|
|
17
19
|
_generateFontAtlas(characterSet: any): void;
|
|
18
|
-
_processCharBatch(batch: any):
|
|
20
|
+
_processCharBatch(batch: any): void;
|
|
19
21
|
_finalizeTextureData(): void;
|
|
22
|
+
/**
|
|
23
|
+
* 渲染 textureData
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
private _debugRenderTexture;
|
|
20
27
|
_createTextureData(characterSet: any): any;
|
|
28
|
+
_reset(): void;
|
|
21
29
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 引擎核心入口,用来初始化渲染引擎。
|
|
3
3
|
* 内部核心系统包括:
|
|
4
|
-
* - {@link EngineMap}
|
|
4
|
+
* - {@link EngineMap} 地图视野系统
|
|
5
5
|
* - {@link EngineRendering} 渲染系统
|
|
6
6
|
* - {@link EngineEvent} 事件系统
|
|
7
7
|
* - {@link EngineWidgets} UI控件系统
|
|
8
8
|
* - {@link EngineSelection} 选择器系统
|
|
9
|
+
* - {@link EngineController} 键鼠交互控制器系统
|
|
10
|
+
* - {@link EngineClock} 时钟系统
|
|
9
11
|
*
|
|
10
12
|
* @category Core
|
|
11
13
|
* @example
|
|
@@ -31,14 +33,16 @@ export class Engine {
|
|
|
31
33
|
selection: object;
|
|
32
34
|
widgets: object;
|
|
33
35
|
});
|
|
34
|
-
/** @internal */ _container: HTMLElement;
|
|
36
|
+
/** @internal */ _container: HTMLElement | null;
|
|
35
37
|
/** @internal */ _event: EngineEvent;
|
|
36
38
|
/** @internal */ _map: EngineMap;
|
|
37
39
|
/** @internal */ _rendering: EngineRendering;
|
|
38
40
|
/** @internal */ _selection: EngineSelection;
|
|
39
41
|
/** @internal */ _widgets: EngineWidgets;
|
|
40
42
|
/** @internal */ _clock: EngineClock;
|
|
43
|
+
/** @internal */ _controller: EngineController;
|
|
41
44
|
isEngine: boolean;
|
|
45
|
+
_id: number;
|
|
42
46
|
/**
|
|
43
47
|
* 将object放到渲染场景中
|
|
44
48
|
* @param {Object3D} object threejs或者mapvthree的object对象
|
|
@@ -134,9 +138,9 @@ export class Engine {
|
|
|
134
138
|
private unlockCamera;
|
|
135
139
|
/**
|
|
136
140
|
* 渲染电影
|
|
137
|
-
* @param {
|
|
141
|
+
* @param {VideoConfig} videoConfig 影片配置对象
|
|
138
142
|
*/
|
|
139
|
-
renderVideo(videoConfig:
|
|
143
|
+
renderVideo(videoConfig: VideoConfig): Promise<void>;
|
|
140
144
|
/**
|
|
141
145
|
* 容器对象
|
|
142
146
|
* @type {HTMLElement}
|
|
@@ -181,6 +185,14 @@ export class Engine {
|
|
|
181
185
|
* 时钟对象,用于模拟时间
|
|
182
186
|
*/
|
|
183
187
|
get clock(): EngineClock;
|
|
188
|
+
/**
|
|
189
|
+
* 键鼠交互控制器对象
|
|
190
|
+
*/
|
|
191
|
+
get controller(): EngineController;
|
|
192
|
+
/**
|
|
193
|
+
* 引擎实例唯一ID
|
|
194
|
+
*/
|
|
195
|
+
get id(): number;
|
|
184
196
|
/**
|
|
185
197
|
* 释放全部资源,之后引擎实例不再可用
|
|
186
198
|
*/
|
|
@@ -197,3 +209,4 @@ import { EngineRendering } from './engine/Rendering';
|
|
|
197
209
|
import { EngineSelection } from './engine/Selection';
|
|
198
210
|
import { EngineWidgets } from './engine/Widgets';
|
|
199
211
|
import { EngineClock } from './engine/Clock';
|
|
212
|
+
import { EngineController } from './engine/Controller';
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 键鼠交互控制器API
|
|
3
|
+
* @category Internal
|
|
4
|
+
* @example
|
|
5
|
+
* ```javascript
|
|
6
|
+
* // 访问控制器
|
|
7
|
+
* const controller = engine.controller;
|
|
8
|
+
*
|
|
9
|
+
* // 设置是否启用
|
|
10
|
+
* controller.enabled = true;
|
|
11
|
+
*
|
|
12
|
+
* // 设置是否启用旋转
|
|
13
|
+
* controller.enableRotate = true;
|
|
14
|
+
*
|
|
15
|
+
* // 设置是否启用缩放
|
|
16
|
+
* controller.enableZoom = true;
|
|
17
|
+
*
|
|
18
|
+
* // 设置是否启用平移
|
|
19
|
+
* controller.enablePan = true;
|
|
20
|
+
*
|
|
21
|
+
* // 设置惯性拖拽
|
|
22
|
+
* controller.inertiaDragging = 0.9;
|
|
23
|
+
*
|
|
24
|
+
* // 设置惯性缩放
|
|
25
|
+
* controller.inertiaZoom = 0.8;
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
export class EngineController {
|
|
30
|
+
constructor(engine: any, options?: {});
|
|
31
|
+
/** @internal */ _engine: any;
|
|
32
|
+
_enabled: boolean;
|
|
33
|
+
_enableRotate: boolean;
|
|
34
|
+
_enableZoom: boolean;
|
|
35
|
+
_enablePan: boolean;
|
|
36
|
+
_enableTilt: boolean;
|
|
37
|
+
_enableFixCenter: boolean;
|
|
38
|
+
_enableTerrainCollision: boolean;
|
|
39
|
+
_inertiaDragging: number;
|
|
40
|
+
_inertiaZoom: number;
|
|
41
|
+
_maximumMovementRatio: number;
|
|
42
|
+
_bounceAnimationTime: number;
|
|
43
|
+
_minimumZoomDistance: number;
|
|
44
|
+
_maximumZoomDistance: number;
|
|
45
|
+
/**
|
|
46
|
+
* 设置是否启用控制器,设置为false时,地图将无法响应任何交互事件
|
|
47
|
+
* @type {Boolean}
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
set enabled(value: boolean);
|
|
51
|
+
/**
|
|
52
|
+
* 是否启用控制器
|
|
53
|
+
* @type {Boolean}
|
|
54
|
+
* @default true
|
|
55
|
+
*/
|
|
56
|
+
get enabled(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* 设置是否启用旋转
|
|
59
|
+
* @type {Boolean}
|
|
60
|
+
* @default true
|
|
61
|
+
*/
|
|
62
|
+
set enableRotate(value: boolean);
|
|
63
|
+
/**
|
|
64
|
+
* 是否启用旋转
|
|
65
|
+
* @type {Boolean}
|
|
66
|
+
* @default true
|
|
67
|
+
*/
|
|
68
|
+
get enableRotate(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* 设置是否启用缩放
|
|
71
|
+
* @type {Boolean}
|
|
72
|
+
* @default true
|
|
73
|
+
*/
|
|
74
|
+
set enableZoom(value: boolean);
|
|
75
|
+
/**
|
|
76
|
+
* 是否启用缩放
|
|
77
|
+
* @type {Boolean}
|
|
78
|
+
* @default true
|
|
79
|
+
*/
|
|
80
|
+
get enableZoom(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* 设置是否启用平移
|
|
83
|
+
* @type {Boolean}
|
|
84
|
+
* @default true
|
|
85
|
+
*/
|
|
86
|
+
set enablePan(value: boolean);
|
|
87
|
+
/**
|
|
88
|
+
* 是否启用平移
|
|
89
|
+
* @type {Boolean}
|
|
90
|
+
* @default true
|
|
91
|
+
*/
|
|
92
|
+
get enablePan(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* 设置是否启用倾斜
|
|
95
|
+
* @type {Boolean}
|
|
96
|
+
* @default true
|
|
97
|
+
*/
|
|
98
|
+
set enableTilt(value: boolean);
|
|
99
|
+
/**
|
|
100
|
+
* 是否启用倾斜
|
|
101
|
+
* @type {Boolean}
|
|
102
|
+
* @default true
|
|
103
|
+
*/
|
|
104
|
+
get enableTilt(): boolean;
|
|
105
|
+
set enableFixCenter(value: boolean);
|
|
106
|
+
get enableFixCenter(): boolean;
|
|
107
|
+
set enableTerrainCollision(value: boolean);
|
|
108
|
+
get enableTerrainCollision(): boolean;
|
|
109
|
+
inertiaTranslate: any;
|
|
110
|
+
/**
|
|
111
|
+
* 设置惯性缩放,0-1,0表示完全禁用惯性缩放,1表示惯性达到最大
|
|
112
|
+
* @type {Number}
|
|
113
|
+
* @default 0.8
|
|
114
|
+
*/
|
|
115
|
+
set inertiaZoom(value: number);
|
|
116
|
+
/**
|
|
117
|
+
* 惯性缩放值
|
|
118
|
+
* @type {Number}
|
|
119
|
+
* @default 0.8
|
|
120
|
+
*/
|
|
121
|
+
get inertiaZoom(): number;
|
|
122
|
+
set maximumMovementRatio(value: number);
|
|
123
|
+
get maximumMovementRatio(): number;
|
|
124
|
+
set bounceAnimationTime(value: number);
|
|
125
|
+
get bounceAnimationTime(): number;
|
|
126
|
+
set minimumZoomDistance(value: number);
|
|
127
|
+
get minimumZoomDistance(): number;
|
|
128
|
+
set maximumZoomDistance(value: number);
|
|
129
|
+
get maximumZoomDistance(): number;
|
|
130
|
+
/**
|
|
131
|
+
* 设置惯性拖拽,0-1,0表示完全禁用惯性拖拽,1表示惯性达到最大
|
|
132
|
+
* @default 0.9
|
|
133
|
+
*/
|
|
134
|
+
set inertiaDragging(value: number);
|
|
135
|
+
/**
|
|
136
|
+
* 惯性拖拽值
|
|
137
|
+
* @type {Number}
|
|
138
|
+
* @default 0.9
|
|
139
|
+
*/
|
|
140
|
+
get inertiaDragging(): number;
|
|
141
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 地图管理器,主要负责地图视野控制相关功能<br/>
|
|
3
3
|
* 该类会随{@link Engine}的初始化自动实例化,不需要开发者手动执行初始化调用,通过`engine.map`访问
|
|
4
4
|
*
|
|
5
5
|
* @category Internal
|
|
@@ -99,6 +99,11 @@ export class EngineMap {
|
|
|
99
99
|
* @param {number} range 距离
|
|
100
100
|
*/
|
|
101
101
|
setMaxRange(range: number): void;
|
|
102
|
+
/**
|
|
103
|
+
* 设置3d地图最近视距
|
|
104
|
+
* @param {number} range 距离
|
|
105
|
+
*/
|
|
106
|
+
setMinRange(range: number): void;
|
|
102
107
|
/**
|
|
103
108
|
* 设置地图视野
|
|
104
109
|
* @param {Array | Vector3} target 目标视野中心点, 经纬度和海拔高度
|
|
@@ -259,11 +264,15 @@ export class EngineMap {
|
|
|
259
264
|
*/
|
|
260
265
|
projectArrayCoordinates(coordinates: any): number[];
|
|
261
266
|
/**
|
|
267
|
+
* @internal
|
|
268
|
+
* @deprecated
|
|
262
269
|
* 开启地图控制,允许用户拖动、平移、旋转等操作
|
|
263
270
|
*/
|
|
264
271
|
enableControl(): void;
|
|
265
272
|
/**
|
|
266
273
|
* 禁用地图控制
|
|
274
|
+
* @internal
|
|
275
|
+
* @deprecated
|
|
267
276
|
*/
|
|
268
277
|
disableControl(): void;
|
|
269
278
|
/**
|
|
@@ -333,6 +342,7 @@ export class EngineMap {
|
|
|
333
342
|
*/
|
|
334
343
|
pickSeaLevelWorldPosition(pixel: Array<number>): Vector3;
|
|
335
344
|
/**
|
|
345
|
+
* @internal 引擎销毁时内部自动调用
|
|
336
346
|
* 销毁地图实例,移除其绑定事件
|
|
337
347
|
*/
|
|
338
348
|
dispose(): void;
|
|
@@ -357,9 +367,11 @@ export class EngineMap {
|
|
|
357
367
|
*/
|
|
358
368
|
get mapType(): string | undefined;
|
|
359
369
|
/**
|
|
370
|
+
* @internal
|
|
371
|
+
* @deprecated
|
|
360
372
|
* 获取map的dom容器
|
|
361
373
|
*/
|
|
362
|
-
get container():
|
|
374
|
+
get container(): HTMLElement | undefined;
|
|
363
375
|
set fov(fov: any);
|
|
364
376
|
/**
|
|
365
377
|
* 获取地图视野开角
|
|
@@ -2,7 +2,8 @@ export class BlankMap3DControl extends BlankMap {
|
|
|
2
2
|
isBlankMap3D: boolean;
|
|
3
3
|
/** @private */
|
|
4
4
|
private _viewStateDirty;
|
|
5
|
-
maxRange:
|
|
5
|
+
maxRange: number;
|
|
6
|
+
minRange: number;
|
|
6
7
|
range: any;
|
|
7
8
|
bounds: any[];
|
|
8
9
|
/**
|
|
@@ -23,6 +24,7 @@ export class BlankMap3DControl extends BlankMap {
|
|
|
23
24
|
*/
|
|
24
25
|
getCameraDistance(forceUpdate: any): any;
|
|
25
26
|
setRange(range: any): void;
|
|
27
|
+
setMinRange(range: any): void;
|
|
26
28
|
/**
|
|
27
29
|
* 相机指向某个具体目标,
|
|
28
30
|
* @param {*} target 目标点
|
|
@@ -41,5 +43,6 @@ export class BlankMap3DControl extends BlankMap {
|
|
|
41
43
|
};
|
|
42
44
|
lockDrag(status: any): void;
|
|
43
45
|
handleEventCameraChange: () => boolean;
|
|
46
|
+
get controller(): import("./controls/MapControl").MapControl | undefined;
|
|
44
47
|
}
|
|
45
48
|
import { BlankMap } from './BlankMap';
|
|
@@ -16,8 +16,11 @@ export class DraggingMovementAggregator {
|
|
|
16
16
|
_amplitudeY: number;
|
|
17
17
|
_targetX: number;
|
|
18
18
|
_targetY: number;
|
|
19
|
+
_scale: number;
|
|
19
20
|
start(x: any, y: any, time: any): void;
|
|
20
21
|
update(x: any, y: any, time: any): void;
|
|
21
22
|
startInertia(isOperateRotation?: boolean): void;
|
|
22
23
|
getInertiaPosition(time: any): any[];
|
|
24
|
+
set scale(scale: number);
|
|
25
|
+
get scale(): number;
|
|
23
26
|
}
|
|
@@ -25,7 +25,16 @@ export class MapControl3D {
|
|
|
25
25
|
startProjectionCenter: any;
|
|
26
26
|
/** @private */
|
|
27
27
|
private _enabled;
|
|
28
|
-
|
|
28
|
+
/** @private */
|
|
29
|
+
private _enableRotate;
|
|
30
|
+
/** @private */
|
|
31
|
+
private _enableZoom;
|
|
32
|
+
/** @private */
|
|
33
|
+
private _enablePan;
|
|
34
|
+
/** @private */
|
|
35
|
+
private _enableTilt;
|
|
36
|
+
/** @private 历史遗留问题,不对外暴露 */
|
|
37
|
+
private enableInertia;
|
|
29
38
|
minPitch: number;
|
|
30
39
|
maxPitch: number;
|
|
31
40
|
zoomSpeed: number;
|
|
@@ -154,7 +163,15 @@ export class MapControl3D {
|
|
|
154
163
|
_tiltBounceBack: () => void;
|
|
155
164
|
_pickPosition(mouse: any): Promise<any>;
|
|
156
165
|
dispose: () => void;
|
|
166
|
+
set enableRotate(enabled: any);
|
|
167
|
+
set enableZoom(enabled: any);
|
|
168
|
+
set enablePan(enabled: any);
|
|
169
|
+
set enableTilt(enabled: any);
|
|
170
|
+
set inertiaDragging(scale: number);
|
|
171
|
+
get inertiaDragging(): number;
|
|
172
|
+
set inertiaZoom(scale: number);
|
|
173
|
+
get inertiaZoom(): number;
|
|
157
174
|
}
|
|
158
|
-
import { EventThrottle } from '../../
|
|
175
|
+
import { EventThrottle } from '../../event/EventThrottle';
|
|
159
176
|
import { DraggingMovementAggregator } from './DraggingMovementAggregator';
|
|
160
177
|
import { PointerMovementAggregator } from './PointerMovementAggregator';
|
|
@@ -14,10 +14,13 @@ export class PointerMovementAggregator {
|
|
|
14
14
|
private _inertiaSpeed;
|
|
15
15
|
/** @private */
|
|
16
16
|
private _inertiaDirection;
|
|
17
|
+
_scale: number;
|
|
17
18
|
start(x: any, y: any, time: any): void;
|
|
18
19
|
update(x: any, y: any, time: any): void;
|
|
19
20
|
setInertiaState(speed: any, direction: any, time: any): void;
|
|
20
21
|
startInertia(): void;
|
|
21
22
|
getInertiaPosition(time: any): any[];
|
|
22
23
|
get inertiaDirection(): any;
|
|
24
|
+
set scale(scale: number);
|
|
25
|
+
get scale(): number;
|
|
23
26
|
}
|
|
@@ -105,6 +105,7 @@ export class Earth extends BaseMap {
|
|
|
105
105
|
_canvas: any;
|
|
106
106
|
set farScale(value: number);
|
|
107
107
|
get farScale(): number;
|
|
108
|
+
get controller(): ScreenSpaceCameraController | undefined;
|
|
108
109
|
}
|
|
109
110
|
import { BaseMap } from '../BaseMap';
|
|
110
111
|
import { Ellipsoid } from './Ellipsoid';
|
|
@@ -121,6 +121,11 @@ export class RenderingCollision {
|
|
|
121
121
|
*/
|
|
122
122
|
_collisionTest(): false | undefined;
|
|
123
123
|
_getScreenPosition(position: any, matrix: any, width: any, height: any): any[];
|
|
124
|
+
/**
|
|
125
|
+
* 计算已投影的字符包围盒(屏幕坐标)
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
private _computeProjectedCharBoundingBoxes;
|
|
124
129
|
_computeCharBoundingBoxes(chars: any, pixelSize: any, rotationMatrix: any, basePosition: any, camera: any, cameraOffset: any, matrix4: any, margin: any, tolerance: any, containerWidth: any, containerHeight: any): {
|
|
125
130
|
minX: number;
|
|
126
131
|
minY: number;
|