@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.
Files changed (62) hide show
  1. package/README.md +3 -3
  2. package/dist/assets/textures/weather/thunder.jpg +0 -0
  3. package/dist/assets/wasm/lanelet.wasm +0 -0
  4. package/dist/assets/workers/{BaiduVectorParser.worker-f7fcc351.js → BaiduVectorParser.worker-486240e8.js} +82 -85
  5. package/dist/assets/workers/{CesiumTerrainParser.worker-fcae0cc9.js → CesiumTerrainParser.worker-ba35b937.js} +108 -113
  6. package/dist/assets/workers/{MVTParser.worker-0dd27c39.js → MVTParser.worker-bb80e3b4.js} +9 -14
  7. package/dist/devtool/panel.js +9 -0
  8. package/dist/mapvthree.module.js +40003 -38856
  9. package/dist/mapvthree.umd.js +5 -5
  10. package/dist/types/Internal.d.ts +1 -0
  11. package/dist/types/adapters/bmap/Icon.d.ts +18 -0
  12. package/dist/types/adapters/bmap/InfoWindow.d.ts +124 -0
  13. package/dist/types/adapters/bmap/Label.d.ts +58 -0
  14. package/dist/types/adapters/bmap/Map.d.ts +124 -0
  15. package/dist/types/adapters/bmap/Marker.d.ts +28 -0
  16. package/dist/types/adapters/bmap/Overlay.d.ts +18 -0
  17. package/dist/types/adapters/bmap/Pixel.d.ts +1 -0
  18. package/dist/types/adapters/bmap/Point.d.ts +8 -0
  19. package/dist/types/adapters/bmap/Size.d.ts +8 -0
  20. package/dist/types/adapters/bmap/index.d.ts +8 -0
  21. package/dist/types/adapters/index.d.ts +1 -0
  22. package/dist/types/index.d.ts +1 -0
  23. package/dist/types/index.open.d.ts +1 -0
  24. package/dist/types/threejs/geometries/text/ScreenTextGeometry.d.ts +15 -0
  25. package/dist/types/threejs/materials/effects/LightningBillboardMaterial.d.ts +3 -0
  26. package/dist/types/threejs/materials/text/ScreenTextMaterial.d.ts +25 -0
  27. package/dist/types/threejs/objects/line/FatLineInternal.d.ts +4 -0
  28. package/dist/types/threejs/objects/point/Label.d.ts +10 -1
  29. package/dist/types/threejs/objects/text/ScreenText.d.ts +273 -0
  30. package/dist/types/threejs/objects/text/font-atlas-manager.d.ts +10 -2
  31. package/dist/types/threemap/Engine.d.ts +17 -4
  32. package/dist/types/threemap/engine/Controller.d.ts +141 -0
  33. package/dist/types/threemap/engine/Map.d.ts +14 -2
  34. package/dist/types/threemap/engine/event/EntityProxy.d.ts +1 -0
  35. package/dist/types/threemap/engine/map/BlankMap.d.ts +1 -1
  36. package/dist/types/threemap/engine/map/BlankMap3DControl.d.ts +4 -1
  37. package/dist/types/{threejs → threemap/engine/map}/controls/DraggingMovementAggregator.d.ts +3 -0
  38. package/dist/types/{threejs → threemap/engine/map}/controls/MapControl3D.d.ts +19 -2
  39. package/dist/types/{threejs → threemap/engine/map}/controls/PointerMovementAggregator.d.ts +3 -0
  40. package/dist/types/threemap/engine/map/earth/Earth.d.ts +1 -0
  41. package/dist/types/threemap/engine/rendering/Collision.d.ts +5 -0
  42. package/dist/types/threemap/engine/rendering/Label.d.ts +13 -0
  43. package/dist/types/threemap/mapView/parser/baidulane/constants/index.d.ts +2 -2
  44. package/dist/types/threemap/mapView/parser/baidulane/core/MaterialFactory.d.ts +1 -1
  45. package/dist/types/threemap/mapView/parser/baidulane/generators/LabelLine.d.ts +11 -4
  46. package/dist/types/threemap/mapView/parser/baidulane/utils/coordinate.d.ts +1 -1
  47. package/dist/types/threemap/mapView/surface/strategy/FastTileLoaderStrategy.d.ts +16 -0
  48. package/dist/types/threemap/mapView/tileProvider/vector/BaiduVectorTileProvider.d.ts +3 -0
  49. package/dist/types/threemap/natural/DynamicWeather.d.ts +2 -0
  50. package/dist/types/threemap/natural/Thunderstorm.d.ts +23 -8
  51. package/dist/types/threemap/overlay/Marker.d.ts +3 -0
  52. package/dist/types/threemap/services/autoComplete/AutoComplete.d.ts +1 -1
  53. package/dist/types/threemap/services/boundary/Boundary.d.ts +3 -3
  54. package/dist/types/threemap/services/common/baiduRequest.d.ts +1 -1
  55. package/dist/types/threemap/services/configs.d.ts +2 -2
  56. package/dist/types/threemap/services/district/DistrictLayer.d.ts +3 -3
  57. package/dist/types/threemap/services/geocoder/Geocoder.d.ts +5 -5
  58. package/dist/types/threemap/services/localSearch/LocalSearch.d.ts +5 -5
  59. package/dist/types/threemap/services/routeSearch/DrivingRoute.d.ts +2 -2
  60. package/dist/types/threemap/services/routeSearch/TransitRoute.d.ts +3 -3
  61. package/package.json +1 -1
  62. /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): true | undefined;
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 {Movie} movie 电影对象
141
+ * @param {VideoConfig} videoConfig 影片配置对象
138
142
  */
139
- renderVideo(videoConfig: any): Promise<void>;
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
- * 地图管理器<br/>
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(): any;
374
+ get container(): HTMLElement | undefined;
363
375
  set fov(fov: any);
364
376
  /**
365
377
  * 获取地图视野开角
@@ -9,6 +9,7 @@ export class EntityProxy {
9
9
  _object: any;
10
10
  _intersection: any;
11
11
  _computeEntity(): any;
12
+ _addPointProperty(entity: any): void;
12
13
  get entity(): any;
13
14
  _entity: any;
14
15
  get intersection(): any;
@@ -108,4 +108,4 @@ export class BlankMap extends BaseMap {
108
108
  get far(): number;
109
109
  }
110
110
  import { BaseMap } from './BaseMap';
111
- import { MapControl } from '../../../threejs/controls/MapControl';
111
+ import { MapControl } from './controls/MapControl';
@@ -2,7 +2,8 @@ export class BlankMap3DControl extends BlankMap {
2
2
  isBlankMap3D: boolean;
3
3
  /** @private */
4
4
  private _viewStateDirty;
5
- maxRange: any;
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
- enableInertia: boolean;
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 '../../threemap/engine/event/EventThrottle';
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;