earthsdk3 3.11.1 → 3.11.2-beta.2

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.
@@ -67,7 +67,7 @@ export declare class ESObjectsManager extends Destroyable {
67
67
  * @param option - 可以是对象 ID 或者对象类型,为空则返回所有对象。
68
68
  * @returns 单个场景对象、场景对象数组或undefined。
69
69
  */
70
- getSceneObject(option?: string): ESSceneObject | ESSceneObject[] | undefined;
70
+ getSceneObject(option?: string, exactType?: boolean): ESSceneObject | ESSceneObject[] | undefined;
71
71
  /**
72
72
  * 获取场景对象的引用。
73
73
  */
@@ -117,9 +117,10 @@ export declare class ESObjectsContext extends Destroyable {
117
117
  /**
118
118
  * 根据不同的条件获取场景对象实例
119
119
  * @param option 可选的条件,如果未提供则返回所有场景对象;如果以 'ES' 开头,则返回指定类型的所有场景对象;否则返回指定ID的场景对象
120
+ * @param exactType 传类查询时(typeof option === 'function')为 true 则要求 typeName 与构造函数静态 type 严格一致,排除继承子类(如 ESRtsTileset 之于 ES3DTileset);默认 false 保持 instanceof 语义(含子类)
120
121
  * @returns 符合条件的场景对象实例数组或单个实例,如果未找到则返回 undefined
121
122
  */
122
- getSceneObject(option?: string | (new (...args: any[]) => ESSceneObject)): ESSceneObject | ESSceneObject[] | undefined;
123
+ getSceneObject(option?: string | (new (...args: any[]) => ESSceneObject), exactType?: boolean): ESSceneObject | ESSceneObject[] | undefined;
123
124
  /**
124
125
  * 根据场景对象类型名获取对应的构造函数
125
126
  * @param sceneObjectType 场景对象类型名
@@ -113,7 +113,7 @@ export declare class ESSceneObject extends Destroyable {
113
113
  * @param id - 对象的唯一标识符。
114
114
  * @returns 对应的场景对象,如果未找到则返回 undefined。
115
115
  */
116
- static getSceneObj: (option?: string | (new (...args: any[]) => ESSceneObject)) => ESSceneObject | ESSceneObject[] | undefined;
116
+ static getSceneObj: (option?: string | (new (...args: any[]) => ESSceneObject), exactType?: boolean) => ESSceneObject | ESSceneObject[] | undefined;
117
117
  /**
118
118
  * 获取环境变量的方法。
119
119
  * @param key - 环境变量的键。
@@ -231,7 +231,7 @@ export declare class ESSceneObject extends Destroyable {
231
231
  * @param id - 对象的唯一标识符。
232
232
  * @returns 对应的场景对象,如果未找到则返回 undefined。
233
233
  */
234
- static readonly getSceneObject: (option?: string | (new (...args: any[]) => ESSceneObject)) => ESSceneObject | ESSceneObject[] | undefined;
234
+ static readonly getSceneObject: (option?: string | (new (...args: any[]) => ESSceneObject), exactType?: boolean) => ESSceneObject | ESSceneObject[] | undefined;
235
235
  /**
236
236
  * 对象创建事件,由实现类决定何时触发,当对象创建完成时触发。
237
237
  */
@@ -1,14 +1,30 @@
1
1
  import { ESTerrainLayerEditing } from '.';
2
2
  import { ESViewer } from '../../../ESViewer';
3
3
  import { Destroyable } from '../../../xbsj-base';
4
+ /** 编辑对象支持的编辑模式:areaLifting=区域升降围栏;polygonFit=多边形拟合 */
5
+ export type ESTerrainEditingMode = 'areaLifting' | 'polygonFit';
4
6
  /**
5
- * 地形图层编辑中的多边形对象
7
+ * 地形图层编辑中的可编辑对象(围栏 / 多边形)
6
8
  *
7
9
  * @remarks
8
- * 用于在地形图层编辑模式下创建一个可编辑的多边形围栏(ESGeoPolygon),
9
- * 将该多边形的点位(points)与场景对象的区域抬升点(areaLiftingPoints)进行双向绑定。
10
- * 当多边形编辑完成(editing 变为 false)时,自动销毁自身实例。
10
+ * 两种模式:
11
+ * - areaLifting:ESGeoPolygon 围栏,点位与 areaLiftingPoints 双向绑定;
12
+ * - polygonFit:ESGeoPolygon 多边形,点位与 polygonFitPoints 双向绑定(浮空显示),
13
+ * 绘制完成触发 polygonFitCompletedEvent。
14
+ * 两种模式绘制完成均保留绘制效果,销毁由核心层 ObjResettingWithEvent 统一管理
15
+ * (切换模式/重新启动时销毁)。
16
+ *
17
+ * 挂载方式:仅作为 sceneObject.components 的子组件存在(isMain=false,不调用 viewer.add,
18
+ * 避免注册到 objm、不出现在对象列表/场景树)。挂入 components 后,由 sceneObject 的 Czm 引擎对象
19
+ * (EngineObject 基类的 components watcher)自动 viewer.add:设置 parentID=sceneObject.id、
20
+ * 创建 Czm 引擎对象(渲染)并设置 activeViewer(editing 才能启动编辑且不被 bindCustomEditing 回滚)。
11
21
  */
12
22
  export declare class EditingESGeoPolygon extends Destroyable {
13
- constructor(sceneObject: ESTerrainLayerEditing, activeViewer: ESViewer | undefined);
23
+ constructor(sceneObject: ESTerrainLayerEditing, activeViewer: ESViewer | undefined, mode?: ESTerrainEditingMode);
24
+ /**
25
+ * 创建多边形编辑器(areaLifting 围栏 / polygonFit 共用)
26
+ * @param options.pointsProp 绑定的点位属性名(areaLiftingPoints 或 polygonFitPoints)
27
+ * @param options.onCompleted 绘制完成回调(多边形 ≥3 点时触发),可选
28
+ */
29
+ private createEditor;
14
30
  }
@@ -24,6 +24,30 @@ export type ESJTerrainLayerEditingConfig = {
24
24
  modelMatrix: ESJNativeNumber16;
25
25
  inverseModelMatrix: ESJNativeNumber16;
26
26
  };
27
+ /**
28
+ * 矩形区域内的地形格点集合(由引擎层计算返回)
29
+ */
30
+ export type ESTerrainRectGridItem = {
31
+ url: string;
32
+ tileX: number;
33
+ tileY: number;
34
+ points: {
35
+ vi: number;
36
+ lng: number;
37
+ lat: number;
38
+ height: number;
39
+ }[];
40
+ };
41
+ /**
42
+ * 待回填高度的地形格点集合(webui → 引擎层写顶点 buffer)
43
+ */
44
+ export type ESTerrainRectFitItem = {
45
+ url: string;
46
+ points: {
47
+ vi: number;
48
+ height: number;
49
+ }[];
50
+ };
27
51
  export declare enum ESTerrainLayerEditingFlattenMode {
28
52
  None = 0,
29
53
  Up = 1,
@@ -69,6 +93,11 @@ export declare class ESTerrainLayerEditing extends ESObjectWithLocation {
69
93
  flattenOffset: number;
70
94
  areaLiftingPoints: import('../../..').ReactiveVariable<[number, number, number][] | undefined>;
71
95
  areaLiftingOffset: number;
96
+ polygonFitEditing: import('../../..').ReactiveVariable<boolean>;
97
+ /** 拟合 3DTiles 会话标志(webui 在拟合模式下置 true):会话中无绘制时不启动其他编辑 */
98
+ polygonFitMode: import('../../..').ReactiveVariable<boolean>;
99
+ /** 多边形拟合绘制完成的区域多边形(带拾取高度 z) */
100
+ polygonFitPoints: import('../../..').ReactiveVariable<[number, number, number][] | undefined>;
72
101
  fencePoints: import('../../..').ReactiveVariable<[number, number, number][] | undefined>;
73
102
  fenceMode: import('../../..').ReactiveVariable<"in" | "out">;
74
103
  pointed: boolean;
@@ -119,6 +148,33 @@ export declare class ESTerrainLayerEditing extends ESObjectWithLocation {
119
148
  private _areaLiftingUpdateEvent;
120
149
  get areaLiftingUpdateEvent(): Event<[]>;
121
150
  areaLiftingUpdate(): void;
151
+ private _requestPolygonGridEvent;
152
+ get requestPolygonGridEvent(): Event<[{
153
+ points: [number, number, number][];
154
+ callback: (items: ESTerrainRectGridItem[]) => void;
155
+ }]>;
156
+ private _applyHeightsEvent;
157
+ get applyHeightsEvent(): Event<[{
158
+ items: ESTerrainRectFitItem[];
159
+ }]>;
160
+ private _polygonFitCompletedEvent;
161
+ /**
162
+ * 多边形拟合绘制完成事件(用户绘制结束后自然触发,携带区域多边形 points,度)。
163
+ * 手动取消(polygonFitEditing 由外部置 false)不会触发。
164
+ */
165
+ get polygonFitCompletedEvent(): Event<[[number, number, number][]]>;
166
+ /**
167
+ * 获取多边形区域内地形格点的真实经纬度、顶点索引与原始高度。
168
+ * 内部通过 requestPolygonGridEvent 委托给引擎层计算(多边形内部过滤),结果经 Promise 返回。
169
+ * @param points 区域多边形经纬度点数组;缺省时读取 polygonFitPoints
170
+ * @returns 多边形覆盖的各瓦片格点集合
171
+ */
172
+ getPolygonGrid(points?: [number, number, number][]): Promise<ESTerrainRectGridItem[]>;
173
+ /**
174
+ * 将指定高度应用到地形瓦片顶点 buffer(引擎层执行,含邻居瓦片边界同步防裂缝)。
175
+ * @param items 待回填的高度格点集合(url → vi → height)
176
+ */
177
+ applyHeights(items: ESTerrainRectFitItem[]): void;
122
178
  constructor(id?: SceneObjectKey);
123
179
  getESProperties(): {
124
180
  coordinate: Property[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "earthsdk3",
3
- "version": "3.11.1",
3
+ "version": "3.11.2-beta.2",
4
4
  "description": "地球可视化实验室 (EarthSDK&CesiumLab) https://www.bjxbsj.cn",
5
5
  "private": false,
6
6
  "type": "module",