s3m-three 0.1.0 → 0.2.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.
Files changed (44) hide show
  1. package/LICENSE +202 -202
  2. package/dist/render/DatasetManager.d.ts +10 -3
  3. package/dist/render/DatasetManager.d.ts.map +1 -1
  4. package/dist/render/DatasetManager.js +14 -5
  5. package/dist/render/DatasetManager.js.map +1 -1
  6. package/dist/render/EdgeLines.js +46 -46
  7. package/dist/render/GroundManager.d.ts +9 -0
  8. package/dist/render/GroundManager.d.ts.map +1 -1
  9. package/dist/render/GroundManager.js +13 -1
  10. package/dist/render/GroundManager.js.map +1 -1
  11. package/dist/render/Picker.js +66 -66
  12. package/dist/render/S3MViewer.d.ts +11 -3
  13. package/dist/render/S3MViewer.d.ts.map +1 -1
  14. package/dist/render/S3MViewer.js +18 -3
  15. package/dist/render/S3MViewer.js.map +1 -1
  16. package/dist/render/StyleMaterial.js +265 -265
  17. package/dist/vendor/meshopt_decoder.module.js +118 -118
  18. package/docs/API.md +20 -0
  19. package/package.json +1 -1
  20. package/src/core/BinaryReader.ts +116 -116
  21. package/src/core/DXTTextureDecode.ts +260 -260
  22. package/src/core/FeatureInfo.ts +150 -150
  23. package/src/core/MeshOpt.ts +401 -401
  24. package/src/core/S3MBParser.ts +590 -590
  25. package/src/core/types.ts +222 -222
  26. package/src/render/DatasetManager.ts +17 -6
  27. package/src/render/EdgeLines.ts +343 -343
  28. package/src/render/GeometryBuilder.ts +840 -840
  29. package/src/render/GroundManager.ts +14 -1
  30. package/src/render/Picker.ts +293 -293
  31. package/src/render/S3MViewer.ts +18 -3
  32. package/src/render/StyleMaterial.ts +602 -602
  33. package/src/render/TextureFactory.ts +134 -134
  34. package/src/tileset/S3MTileset.ts +552 -552
  35. package/src/vendor/meshopt_decoder.module.d.ts +31 -31
  36. package/src/vendor/meshopt_decoder.module.js +118 -118
  37. package/dist/render/CoordinateHelper.d.ts +0 -90
  38. package/dist/render/CoordinateHelper.d.ts.map +0 -1
  39. package/dist/render/CoordinateHelper.js +0 -85
  40. package/dist/render/CoordinateHelper.js.map +0 -1
  41. package/dist/render/S3MLayer.d.ts +0 -457
  42. package/dist/render/S3MLayer.d.ts.map +0 -1
  43. package/dist/render/S3MLayer.js +0 -1860
  44. package/dist/render/S3MLayer.js.map +0 -1
@@ -1,457 +0,0 @@
1
- /**
2
- * S3M × MapLibre / Mapbox 图层
3
- *
4
- * 坐标链路:
5
- * S3M 顶点(数据集局部 ENU,米)
6
- * → 数据集 Group 偏移:把各数据集锚点对齐到「场景锚点」
7
- * → L 矩阵:ENU → Web Mercator 归一化坐标
8
- * → 宿主传入的 mercator→clip 矩阵
9
- *
10
- * 关键点:three 场景原点固定在**场景锚点**(第一个数据集的位置),
11
- * 所有顶点只保留「相对锚点的米」,避免 float32 在墨卡托大坐标下的抖动(RTC 思路)。
12
- * 多数据集叠加时,每个数据集一个 Group,用 position 承担锚点差。
13
- *
14
- * 兼容性:图层只依赖 `MapLike` 这组鸭子类型接口,MapLibre GL JS v4/v5 与
15
- * Mapbox GL JS v2/v3 都可以直接 `map.addLayer(layer)`,不引入任一方的类型依赖。
16
- */
17
- import * as THREE from 'three';
18
- import { S3MTileset } from '../tileset/S3MTileset.js';
19
- import type { BuildTileFn } from '../tileset/S3MTileset.js';
20
- import { STYLE, STYLE_LABELS, SELECT_MODE, SELECT_MODE_LABELS } from './StyleMaterial.js';
21
- import type { OutlineMaterial, StyleMode, SelectMode } from './StyleMaterial.js';
22
- import { Picker } from './Picker.js';
23
- import type { LineSharedUniforms, ThickLineMaterial } from './EdgeLines.js';
24
- import { type ProjectionMode } from './OrthoProjection.js';
25
- import { AttributeQuery } from '../core/AttributeQuery.js';
26
- import type { AttributeQueryOptions } from '../core/AttributeQuery.js';
27
- import type { FeatureAttributes, Stats, StyleUniforms } from '../core/types.js';
28
- import { type MapLike, type WorldCoordinateHelperLike, type MapMouseEventLike } from './CoordinateHelper.js';
29
- import { DatasetManager, type DatasetAlignment, type S3MDatasetOptions, type S3MDatasetEntry } from './DatasetManager.js';
30
- import { FeatureStyleManager, type FeatureStyle, type ColorByFieldOptions, type ThematicLegendEntry, type ThematicResult, type BatchConflict, type BatchAudit, type FieldFilterOptions, type FieldFilterResult, type FieldElevationOptions, type FieldElevationResult, type S3MFilter } from './FeatureStyleManager.js';
31
- import { GroundManager, type GroundMode, type GroundOptions } from './GroundManager.js';
32
- export type { MapLike, WorldCoordinateHelperLike, MapMouseEventLike, DatasetAlignment, S3MDatasetOptions, S3MDatasetEntry, FeatureStyle, ColorByFieldOptions, ThematicLegendEntry, ThematicResult, BatchConflict, BatchAudit, FieldFilterOptions, FieldFilterResult, FieldElevationOptions, FieldElevationResult, S3MFilter, GroundMode, GroundOptions, };
33
- export { GroundManager, DatasetManager, FeatureStyleManager };
34
- export interface S3MStyle {
35
- /** 着色模式,见 STYLE */
36
- mode: StyleMode;
37
- /** 主色:白膜 / 单色 / 渐变起点 / 动态扫描底色 */
38
- colorA: string;
39
- /** 渐变终点 / 楼层高段色 */
40
- colorB: string;
41
- /** 动态扫描的高亮带颜色 */
42
- colorC: string;
43
- /** 选中单体的高亮色 */
44
- selectColor: string;
45
- /** 选中单体的高亮模式:'overlay' 叠加原图 | 'replace' 纯色覆盖 | 'multiply' 叠乘 | 'glowOnly' 仅描边发光 */
46
- selectMode?: SelectMode;
47
- /** 选中高亮叠色强度 / 透明度(0~1,默认 0.65) */
48
- selectOpacity?: number;
49
- /** 选中自发光强度(0~1,默认 0.35) */
50
- selectEmissive?: number;
51
- /** 选中单体垂直拔高高度(米,默认 0) */
52
- selectElevation?: number;
53
- /** 楼层估算层高(米) */
54
- floorHeight: number;
55
- /** 动态扫描速度倍率 */
56
- speed: number;
57
- /** 整体不透明度,< 1 时自动开启混合并关闭深度写入 */
58
- opacity: number;
59
- /** 'flat' 平面着色(白模更干净) | 'smooth' 平滑着色(倾斜摄影更自然) */
60
- shading: 'flat' | 'smooth';
61
- /** 选中单体时是否压暗其余建筑 */
62
- dimOthers: boolean;
63
- /** 未选中建筑压暗系数(0~1,默认 0.42) */
64
- dimFactor?: number;
65
- /** 是否给选中单体描边 */
66
- outline: boolean;
67
- /** 选中描边的画法:'edges' 单体棱线(默认)| 'hull' 背面外扩轮廓 */
68
- outlineStyle?: 'edges' | 'hull';
69
- /** 描边颜色(默认跟随 selectColor) */
70
- outlineColor?: string;
71
- /** 外扩轮廓的粗细(米,默认 0.9,仅 outlineStyle: 'hull' 生效) */
72
- outlineWidth?: number;
73
- /** 选中棱线的粗细(像素,默认 3,仅 outlineStyle: 'edges' 生效,缩放时保持恒定) */
74
- outlineWidthPx?: number;
75
- /** 是否显示几何棱线(CPU 端生成,有开销) */
76
- edges: boolean;
77
- /** 全局棱线粗细(像素,默认 1.2) */
78
- edgeWidth?: number;
79
- edgeColor: string;
80
- edgeOpacity?: number;
81
- roofThreshold?: number;
82
- /** 是否与模型原色贴图叠加混合(0 = 纯色覆盖,1 = 叠乘原色贴图) */
83
- texMix?: number;
84
- /** 半透明时是否保持深度写入(默认 true,保持写入可彻底遮挡背面与内部棱线,避免背面透出) */
85
- depthWrite?: boolean;
86
- }
87
- export declare const DEFAULT_STYLE: S3MStyle;
88
- export interface PickResult extends FeatureAttributes {
89
- datasetId: string;
90
- datasetName: string;
91
- /** 网格编号 */
92
- objectId: number;
93
- /** 单体控制位(顶点区间型 = batchId,实例化型 = 状态纹理下标),-1 表示没有单体化信息 */
94
- batchId: number;
95
- /** 实例化几何命中的实例序号;非实例化为 undefined */
96
- instanceIndex?: number;
97
- skeletonName: string;
98
- /** 单体中心经纬度,拿不到时为 null */
99
- centerLngLat: [number, number] | null;
100
- /** 命中点三维场景坐标 [x, y, z](米,场景 ENU) */
101
- point?: [number, number, number] | null;
102
- /** 命中点经纬度 [lng, lat] */
103
- lngLat?: [number, number] | null;
104
- /** 命中点高程(米) */
105
- altitude?: number | null;
106
- mesh: THREE.Mesh;
107
- }
108
- export interface S3MLayerOptions {
109
- id?: string;
110
- /** 单数据集简写 */
111
- configUrl?: string;
112
- /** 多数据集 */
113
- datasets?: S3MDatasetOptions[];
114
- style?: Partial<S3MStyle>;
115
- /** 3D 物理地表面 / 基坑开挖配置 */
116
- ground?: GroundOptions;
117
- pickable?: boolean;
118
- /** 每个数据集最多驻留瓦片 */
119
- maxTiles?: number;
120
- /** 每个数据集并发请求数 */
121
- maxConcurrent?: number;
122
- /** LOD 切换范围缩放系数(默认 1.0),> 1 更倾向保留粗模,< 1 提前换细模 */
123
- lodRangeScale?: number;
124
- /** 自定义瓦片构建器(测试 / 服务端渲染时注入) */
125
- buildTile?: BuildTileFn | null;
126
- /**
127
- * 可选:业务属性查询配置(iServer 数据服务)。
128
- * 配上之后才能用 `colorByField()` 按业务字段着色 —— 属性值不在 S3M 瓦片里,只能去数据服务查。
129
- */
130
- attributes?: AttributeQueryOptions;
131
- /**
132
- * 投影模式,默认 `'perspective'`(跟随 MapLibre,与底图严格对齐)。
133
- * `'orthographic'` 让本层按正交投影重画:视图矩阵从 MapLibre 每帧输入反推,
134
- * pan / zoom / pitch / rotate 与拾取、选中描边全部照常。
135
- * 注意正交只覆盖本层——底图、地形、DOM Marker 仍走 MapLibre 的透视投影,
136
- * 会与本层对不齐,需要 App 自行退出,详见 README「正交投影」。
137
- */
138
- projection?: ProjectionMode;
139
- onStats?: (stats: Stats) => void;
140
- onReady?: (entry: S3MDatasetEntry) => void;
141
- onPick?: (result: PickResult | null) => void;
142
- onError?: (error: unknown) => void;
143
- }
144
- export declare class S3MLayer {
145
- readonly id: string;
146
- readonly type: "custom";
147
- readonly renderingMode: "3d";
148
- readonly options: S3MLayerOptions;
149
- readonly pickable: boolean;
150
- onStats: (stats: Stats) => void;
151
- onReady: (entry: S3MDatasetEntry) => void;
152
- onPick: (result: PickResult | null) => void;
153
- onError: (error: unknown) => void;
154
- map: MapLike | null;
155
- renderer: THREE.WebGLRenderer | null;
156
- scene: THREE.Scene | null;
157
- camera: THREE.Camera | null;
158
- picker: Picker | null;
159
- readonly uniforms: StyleUniforms;
160
- style: S3MStyle;
161
- readonly outlineMaterial: OutlineMaterial;
162
- /** 等宽线共享的分辨率 uniform(全局棱线 + 选中棱线共用) */
163
- readonly lineShared: LineSharedUniforms;
164
- /** 全局棱线材质 */
165
- readonly edgeMaterial: ThickLineMaterial;
166
- /** 选中棱线材质 */
167
- readonly selectionEdgeMaterial: ThickLineMaterial;
168
- /** 3D 物理地表面 / 基坑开挖管理器 */
169
- readonly groundManager: GroundManager;
170
- /** 多数据集生命周期与锚点管理器 */
171
- private readonly _datasetManager;
172
- /** 单体样式、专题着色与状态纹理管理器 */
173
- private readonly _featureStyleManager;
174
- /** 兼容 datasets 映射表暴露 */
175
- get datasets(): Map<string, S3MDatasetEntry>;
176
- /** 场景主锚点(ENU 原点对应的世界坐标) */
177
- get sceneAnchor(): {
178
- x: number;
179
- y: number;
180
- z: number;
181
- meterInMercator: number;
182
- altitude?: number;
183
- } | null;
184
- set sceneAnchor(val: {
185
- x: number;
186
- y: number;
187
- z: number;
188
- meterInMercator: number;
189
- altitude?: number;
190
- } | null);
191
- private readonly _pickables;
192
- private _pickSeq;
193
- private readonly _freePickIds;
194
- /** SMID → 包含它的网格。改单个单体样式时只重算这几块,不用全量扫 */
195
- private readonly _smidMeshes;
196
- /** 每块网格的世界高度范围,用来增量维护 uHeightMin / uHeightMax */
197
- private readonly _meshHeight;
198
- private _heightMin;
199
- private _heightMax;
200
- private readonly _boxScratch;
201
- private _selection;
202
- private _selectedMeshes;
203
- private _outlineMesh;
204
- private _outlineMeshes;
205
- private _selectionEdges;
206
- private _selectionEdgeMeshes;
207
- private _edgesEnabled;
208
- /** 业务属性查询(可选,配了 `attributes` 才有) */
209
- attributeQuery: AttributeQuery | null;
210
- private readonly _enuMatrix;
211
- private _needsRepaint;
212
- private _frame;
213
- private readonly _fps;
214
- private _keyLight;
215
- private _fillLight;
216
- private readonly _datasetQueue;
217
- /** 投影模式;正交不可用时(老版本 MapLibre)自动退回透视并告警一次 */
218
- private _projection;
219
- private _orthoWarned;
220
- private _lodRangeScale;
221
- constructor(options?: S3MLayerOptions);
222
- private readonly _onProjectionChange;
223
- onAdd(map: MapLike, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
224
- onRemove(): void;
225
- private _addLights;
226
- /**
227
- * 让光照跟着地图朝向走:主光在镜头后上方偏左,补光在后上方偏右。
228
- * 相当于一盏头灯,看到的立面永远是受光面。
229
- */
230
- private _updateLights;
231
- private _normalizeDatasets;
232
- /** 追加一个数据集。图层 addLayer 之前调用会抛错。 */
233
- addDataset(ds: S3MDatasetOptions): Promise<S3MDatasetEntry>;
234
- /**
235
- * 归一化世界坐标 → 经纬度 [lng, lat]
236
- */
237
- private _lngLatFromWorld;
238
- /** 当地图 CRS 投影切换或宿主 map 挂载后,重新计算场景锚点与各数据集 offset */
239
- private _recomputeAnchors;
240
- /**
241
- * 获取指定数据集的垂直高程偏移(米)。
242
- * 若不传 id,默认获取第一个(或默认)数据集的高程偏移。
243
- */
244
- getDatasetHeight(id?: string): number;
245
- /**
246
- * 设置指定数据集的垂直高程偏移(米),正数抬升,负数下降。
247
- */
248
- setDatasetHeight(idOrHeight: string | number, heightOffset?: number): void;
249
- /**
250
- * 动态设置指定数据集的垂直对齐基准('origin' | 'bottom' | 'top' | 'center')。
251
- */
252
- setDatasetAlign(idOrAlign: string | DatasetAlignment, align?: DatasetAlignment): void;
253
- /** @internal 语义高度对齐计算代理,供内部与测试使用 */
254
- _computeAlignOffset(tileset: S3MTileset | any, align?: DatasetAlignment): number;
255
- /**
256
- * 为指定单体(SMID)设置独立自定义样式(颜色、拔高、透明度)。
257
- */
258
- setFeatureStyle(smid: number, style: FeatureStyle): void;
259
- /** 批量为多个单体设置样式 */
260
- setFeaturesStyle(smids: number[], style: FeatureStyle): void;
261
- /** 获取指定单体的自定义样式 */
262
- getFeatureStyle(smid: number): FeatureStyle | null;
263
- /** 获取所有自定义样式的单体映射表 */
264
- getFeatureStyles(): Map<number, FeatureStyle>;
265
- /** 移除指定单体的自定义样式,恢复为图层全局样式 */
266
- removeFeatureStyle(smid: number): void;
267
- /** 清空所有单体的自定义样式 */
268
- clearFeatureStyles(): void;
269
- setAttributeSource(options: AttributeQueryOptions | null): void;
270
- getLoadedSmids(): number[];
271
- auditBatches(): BatchAudit;
272
- getThematicField(): string | null;
273
- setThematicColors(colors: Map<number, string> | null, field?: string): void;
274
- clearThematic(): void;
275
- getFilterField(): string | null;
276
- filterByField(options: FieldFilterOptions): Promise<FieldFilterResult>;
277
- clearFieldFilter(): void;
278
- getElevationField(): string | null;
279
- elevateByField(options: FieldElevationOptions): Promise<FieldElevationResult>;
280
- setThematicElevation(elevations: Map<number, number> | null, field?: string): void;
281
- clearThematicElevation(): void;
282
- colorByField(options: ColorByFieldOptions): Promise<ThematicResult>;
283
- setFilter(filter: S3MFilter | null): void;
284
- getFilter(): S3MFilter | null;
285
- clearFilter(): void;
286
- /** 设置 3D 物理地表面渲染模式:'none' 关闭 | 'translucent' 半透明透视 | 'excavate' 基坑开挖 */
287
- setGroundMode(mode: GroundMode): void;
288
- /** 设置 3D 物理地表面不透明度 (0~1) */
289
- setGroundOpacity(opacity: number): void;
290
- /** 设置基坑开挖范围 [minX, minY, maxX, maxY](米,场景 ENU 坐标) */
291
- setExcavationBounds(bounds: [number, number, number, number] | null): void;
292
- private _isFeatureHidden;
293
- getAllMeshes(): THREE.Mesh[];
294
- private _meshesOf;
295
- private _markOverridesDirty;
296
- flushOverrides(): void;
297
- /** @internal 内部状态纹理烘焙代理,保留供回归单测与钩子使用 */
298
- _applyOverridesToMesh(mesh: THREE.Mesh): void;
299
- removeDataset(id: string): void;
300
- /** 清空当前所有数据集 */
301
- clearDatasets(): void;
302
- setDatasetVisible(id: string, visible: boolean): void;
303
- private _registerTile;
304
- /** 瓦片被淘汰:从拾取表和场景里摘掉,并释放它自己的 GPU 资源 */
305
- private _unregisterTile;
306
- /**
307
- * 拾取 ID 只有 2 个字节(RG 两个通道),65535 个网格就到头了,
308
- * 所以必须回收:瓦片淘汰 / 数据集移除时把 id 还回池子。
309
- */
310
- private _allocPickId;
311
- private _releasePickId;
312
- /** 动态设置图层整体透明度 (0.0 ~ 1.0) */
313
- setOpacity(opacity: number): void;
314
- /** 合并并应用样式。只改 uniform 的项不会触发几何/着色器重建。 */
315
- setStyle(patch?: Partial<S3MStyle>): void;
316
- getStyle(): S3MStyle & {
317
- modeLabel: string;
318
- };
319
- private _applyStyleUniforms;
320
- /** 透明度:只改材质状态,不触发着色器重编译,所以可以跟着滑块实时拖 */
321
- private _applyOpacity;
322
- /** 平面/平滑着色:FLAT_SHADED 是编译期宏,改它必须重编译 */
323
- private _applyShading;
324
- /**
325
- * 高度范围增量维护。
326
- *
327
- * 原来每注册一块瓦片都要把所有网格重新遍历一遍、每个都 clone 一个 Box3 再乘矩阵,
328
- * 加载 n 块瓦片就是 O(n²) 次矩阵乘 + n² 个垃圾对象。现在只在网格进出的记一次,
329
- * 全局值从缓存里滚:只有被移除的那块正好卡在边界上时,才回退到一次 O(n) 重算。
330
- */
331
- private _addMeshHeight;
332
- private _removeMeshHeight;
333
- /** 数据集整体位移(换高程偏移 / 重新布局)后,缓存的世界高度全部失效 */
334
- private _refreshAllHeights;
335
- private _recomputeHeightRange;
336
- private _pushHeightRange;
337
- /** 建 SMID → 网格 反查表,逐单体改样式时才知道该重算哪几块 */
338
- private _indexMeshSmids;
339
- private _unindexMeshSmids;
340
- /**
341
- * 全局棱线开关。
342
- *
343
- * 数据自带棱线包(primitiveType 13)时直接用,成本为零;
344
- * 没有的话才用 EdgesGeometry 现算 —— 那是 CPU 端的活,几十万面一次性建会卡住主线程
345
- * (实测 20 个网格 1.9s),所以按 8ms 一帧切片,边建边出。
346
- *
347
- * 棱线本身用「屏幕空间等宽线」画(见 EdgeLines.ts):WebGL 的 lineWidth 基本无效,
348
- * 只有摊成面向屏幕的四边形,`edgeWidth` 才能真正调粗。
349
- */
350
- setEdges(enabled: boolean): void;
351
- /** 让全局棱线材质跟上 style.edgeColor / edgeWidth / edgeOpacity */
352
- private _syncEdgeStyle;
353
- /** 让数据自带的棱线跟着 style.edgeColor / opacity 走(这些是 LineBasicMaterial,改不了粗细) */
354
- private _styleEdgeLine;
355
- private _refreshEdgeLines;
356
- private _ensureEdges;
357
- private _removeEdges;
358
- private _onClick;
359
- /** 事件对象(宿主 MouseEvent 或原生事件)→ 拾取结果 */
360
- pickFromEvent(e: MapMouseEventLike | MouseEvent): PickResult | null;
361
- /** 获取指定屏幕像素对应的场景射线(用于高精度求交与穿透拾取) */
362
- getRayAt(x: number, y: number): THREE.Ray | null;
363
- private _intersectMeshAtRay;
364
- private _buildPickResult;
365
- /** 按 canvas 左上角的 CSS 像素坐标拾取。 */
366
- pick(x: number, y: number): PickResult | null;
367
- /**
368
- * 拾取指定屏幕像素对应的世界坐标与场景位置。
369
- * 优先与命中的建筑网格精确求交;未命中建筑时若视线与地表相交则返回地面交点。
370
- */
371
- pickPosition(x: number, y: number): {
372
- lngLat: [number, number];
373
- altitude: number;
374
- point: [number, number, number];
375
- } | null;
376
- /**
377
- * 沿视线方向穿透拾取多个单体,按由近至远排序返回。
378
- */
379
- drillPick(x: number, y: number, limit?: number): PickResult[];
380
- /**
381
- * 获取指定 SMID 单体的经纬度包围盒 [[minLng, minLat], [maxLng, maxLat]]。
382
- * 若模型尚未加载到场景中或无此单体则返回 null。
383
- */
384
- getFeatureBounds(smid: number): [[number, number], [number, number]] | null;
385
- /**
386
- * 视角聚焦飞向指定 SMID 单体。
387
- * @param smid 单体 SMID
388
- * @param options 传给宿主 map.fitBounds 的参数(如 padding, maxZoom, duration 等)
389
- * @returns 是否成功找到并触发飞向
390
- */
391
- flyToFeature(smid: number, options?: Record<string, unknown>): boolean;
392
- /** 实例序号 → 所属单体(按网格缓存反查表,实例多的数据不用每次重建) */
393
- private _instanceFeature;
394
- /** 实例化几何的单体包围盒:base mesh 的包围盒套上该实例的矩阵 */
395
- private _instanceBox;
396
- /** 选中/取消选中单体。`silent` 为 true 时不回调 onPick。 */
397
- select(result: PickResult | null, { silent }?: {
398
- silent?: boolean;
399
- }): void;
400
- /**
401
- * 选中单体的棱线:只挑这个单体自己的三角面算折边,再画成屏幕空间等宽线。
402
- * 抽出来的线段数很少(一栋楼通常几百到几千条),所以选中开销可以忽略。
403
- */
404
- private _addSelectionEdges;
405
- /** 实例化几何:把某个实例的矩阵套到一个普通 Mesh/子节点上(子节点不参与父级的 instanceMatrix) */
406
- private _applyInstanceTransform;
407
- /** 旧的描边画法:背面外扩法,整块几何一起上,靠 uSelBatch 只显示选中那栋 */
408
- private _addSelectionHull;
409
- /** 只改 uniform:颜色 / 粗细 / 拔高,拖着滑块实时生效,不重建几何 */
410
- private _syncSelectionStyle;
411
- /** 选中单体的实际拔高 = 全局选中拔高 + 该单体的独立拔高(与着色器口径一致) */
412
- private _selectionElevation;
413
- private _clearSelectionDecoration;
414
- /** 等宽线要按设备像素换算线宽:uResolution 用绘图缓冲尺寸,uDpr 是缓冲 / CSS 的比值 */
415
- private _updateLineResolution;
416
- /** 从 render 参数里取出 mercator→clip 矩阵,兼容 MapLibre v4 / v5 与 Mapbox 两种签名 */
417
- private _extractMatrix;
418
- /**
419
- * 正交模式:把透视 MVP 换成同视角正交 MVP。
420
- * 返回 null = 本帧保持透视(拿不到独立投影矩阵 / 矩阵不同源),只告警一次。
421
- */
422
- private _applyOrtho;
423
- /** 正交不可用只告警一次,不每帧刷屏 */
424
- private _warnOrtho;
425
- /**
426
- * 本帧垂直视场角(弧度)。取 render() 入参的 fov(≥5 直接给弧度),
427
- * 退回 transform.fovInRadians。**不用 transform.fov**:v5 起它是「度」。
428
- */
429
- private _frameFov;
430
- private _canvasAspect;
431
- /**
432
- * 切换投影模式,下一帧生效。
433
- *
434
- * 正交只影响本层:底图瓦片、地形、DOM Marker / 弹窗仍走 MapLibre 的透视
435
- * 投影,和正交层差 ≈ 楼高 / 相机距(城市尺度几十到上百像素),App 需要
436
- * 自行把这些层退出。拾取、选中描边、按单体着色/隐藏/抬高不受影响。
437
- */
438
- setProjection(mode: ProjectionMode): void;
439
- /** 当前 LOD 切换距离缩放系数 */
440
- get lodRangeScale(): number;
441
- /**
442
- * 动态调整 LOD 切换范围缩放系数。
443
- * scale > 1 时倾向保留粗模(降低瓦片请求与面数);scale < 1 时提前细化加载高精瓦片。
444
- */
445
- setLodRangeScale(scale: number, datasetId?: string): void;
446
- /** 当前投影模式 */
447
- get projection(): ProjectionMode;
448
- render(gl: WebGLRenderingContext | WebGL2RenderingContext, arg: unknown): void;
449
- get fps(): number;
450
- get stats(): Stats;
451
- /** 所有数据集合并后的经纬度包围盒 */
452
- getBounds(): [[number, number], [number, number]] | null;
453
- dispose(): void;
454
- }
455
- export { STYLE, STYLE_LABELS, SELECT_MODE, SELECT_MODE_LABELS };
456
- export type { SelectMode };
457
- //# sourceMappingURL=S3MLayer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"S3MLayer.d.ts","sourceRoot":"","sources":["../../src/render/S3MLayer.ts"],"names":[],"mappings":"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"}