cesium-pocket 0.1.26-alpha → 0.1.28-alpha

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.
@@ -0,0 +1,396 @@
1
+ import { EntityCollection as w, defined as A, ScreenSpaceEventType as h, CallbackPositionProperty as v, Color as c, ScreenSpaceEventHandler as x, Cartographic as E, Math as d, VerticalOrigin as b, Cartesian2 as B, LabelStyle as I, HeightReference as M, Cartesian3 as u, JulianDate as k, EllipsoidGeodesic as G, BoundingSphere as P, Transforms as T, Matrix4 as g, CallbackProperty as D, PolylineDashMaterialProperty as O, PolygonHierarchy as N } from "cesium";
2
+ const n = {
3
+ STOPED: Symbol("STOPED"),
4
+ //未开启
5
+ DRAWABLE: Symbol("DRAWABLE"),
6
+ //可绘制 绿鼠标 右键stop
7
+ // FIRST_POINT: Symbol('FIRST_POINT'),//已经绘制完起点 右键edit
8
+ EDITING: Symbol("EDITING"),
9
+ //编辑中 鼠标中键回退FIRST_POINT,右键则stop
10
+ DRAGABLE: Symbol("DRAGABLE"),
11
+ //拖拽中,只有选中并拖拽的时候才能够成立
12
+ DRAGING: Symbol("DRAGING"),
13
+ DONE: Symbol("DONE")
14
+ };
15
+ class F {
16
+ constructor(t) {
17
+ this.status = n.STOPED, this.cesiumDom = t;
18
+ }
19
+ /**
20
+ * 开始绘制
21
+ */
22
+ startStatus() {
23
+ this.status = n.DRAWABLE, this.cesiumDom.style.cursor = "crosshair";
24
+ }
25
+ /**
26
+ * 绘制完第一个点
27
+ */
28
+ // protected drawFirstPointStatus(): void {
29
+ // this.status = DRAW_STATUS.FIRST_POINT
30
+ // this.cesiumDom.style.cursor = 'crosshair'
31
+ // }
32
+ /**
33
+ * 进入编辑状态
34
+ */
35
+ editStatus() {
36
+ this.status = n.EDITING, this.cesiumDom.style.cursor = "default";
37
+ }
38
+ /**
39
+ * 重新进入绘制状态
40
+ */
41
+ // protected reDrawStatus(): void {
42
+ // this.status = DRAW_STATUS.FIRST_POINT
43
+ // this.cesiumDom.style.cursor = 'crosshair'
44
+ // }
45
+ /**
46
+ * 可拖拽
47
+ */
48
+ dragStatus() {
49
+ this.status = n.DRAGABLE, this.cesiumDom.style.cursor = "default";
50
+ }
51
+ /**
52
+ * 正在拖拽时
53
+ */
54
+ dragingStatus() {
55
+ this.status = n.DRAGING, this.cesiumDom.style.cursor = "grabbing";
56
+ }
57
+ /**
58
+ * 已完成
59
+ */
60
+ doneStatus() {
61
+ this.status = n.DONE, this.cesiumDom.style.cursor = "default";
62
+ }
63
+ stopStatus() {
64
+ this.status = n.STOPED, this.cesiumDom.style.cursor = "default";
65
+ }
66
+ getStatus() {
67
+ return this.status;
68
+ }
69
+ }
70
+ const Q = "data:image/png;base64,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";
71
+ class W extends F {
72
+ constructor(t, i) {
73
+ super(i), this.pointsCollection = new w(), this.currentDragPoint = null, this.mainData = [], this.textDom = null, this.point_L_ClickEvent = () => {
74
+ var e;
75
+ (e = this.handler) == null || e.setInputAction((s) => {
76
+ let a = this.viewer.camera.getPickRay(s.position), o = this.viewer.scene.globe.pick(a, this.viewer.scene);
77
+ A(o) && n.DRAWABLE == super.getStatus() && this.createBillboard(o);
78
+ }, h.LEFT_CLICK);
79
+ }, this.point_L_MIDDLE_ClickEvent = () => {
80
+ var e;
81
+ (e = this.handler) == null || e.setInputAction(() => {
82
+ n.DRAGABLE == super.getStatus() && this.currentDragPoint && (this.viewer.scene.screenSpaceCameraController.enableRotate = !1, confirm("确定要删除吗?") ? (this.viewer.entities.remove(this.currentDragPoint), this.pointsCollection.remove(this.currentDragPoint), this.pointsBackEdit(), this.setMainData(), this.viewer.scene.screenSpaceCameraController.enableRotate = !0) : (this.pointsBackEdit(), this.viewer.scene.screenSpaceCameraController.enableRotate = !0));
83
+ }, h.MIDDLE_CLICK);
84
+ }, this.point_R_ClickEvent = () => {
85
+ var e;
86
+ (e = this.handler) == null || e.setInputAction(() => {
87
+ n.DRAWABLE == super.getStatus() ? (super.editStatus(), this.setMainData()) : n.EDITING == super.getStatus() ? super.doneStatus() : n.DRAGABLE == super.getStatus() ? super.doneStatus() : n.DONE == super.getStatus() && (super.stopStatus(), this.pointsReset());
88
+ }, h.RIGHT_CLICK);
89
+ }, this.point_L_DownEvent = () => {
90
+ var e;
91
+ (e = this.handler) == null || e.setInputAction(() => {
92
+ n.DRAGABLE == super.getStatus() && (super.dragingStatus(), this.viewer.scene.screenSpaceCameraController.enableRotate = !1);
93
+ }, h.LEFT_DOWN);
94
+ }, this.point_L_UpEvent = () => {
95
+ var e;
96
+ (e = this.handler) == null || e.setInputAction(() => {
97
+ n.DRAGING == super.getStatus() && (this.pointsBackEdit(), this.viewer.scene.screenSpaceCameraController.enableRotate = !0);
98
+ }, h.LEFT_UP);
99
+ }, this.point_moveEvent = () => {
100
+ var e;
101
+ (e = this.handler) == null || e.setInputAction((s) => {
102
+ const a = this.viewer.camera.getPickRay(s.endPosition);
103
+ if (a) {
104
+ const o = this.viewer.scene.globe.pick(a, this.viewer.scene);
105
+ A(o) && (n.DRAWABLE == super.getStatus() ? this.showPosition(s.endPosition) : n.EDITING == super.getStatus() ? (this.textDom && this.viewer.container.removeChild(this.textDom), this.pickPoint(s.endPosition)) : n.DRAGABLE == super.getStatus() ? this.pointsBackEdit() : n.DRAGING == super.getStatus() && this.currentDragPoint && (this.currentDragPoint.position = new v(() => o, !1)));
106
+ }
107
+ }, h.MOUSE_MOVE);
108
+ }, this.pickPoint = (e) => {
109
+ let s = this.viewer.scene.pick(e);
110
+ s && s.id && s.id.properties.getValue().entityType == "POINT" && (s.id.point.color = c.YELLOW, super.dragStatus(), this.currentDragPoint = s.id);
111
+ }, this.viewer = t, this.viewer.entities.add(this.pointsCollection), this.textDom = document.createElement("div"), this.textDom.style.position = "absolute", this.textDom.style.zIndex = " 10", this.textDom.style.color = "white", this.textDom.style.backgroundColor = "black", this.textDom.style.padding = "2px 6px", this.viewer.container.appendChild(this.textDom);
112
+ }
113
+ start() {
114
+ super.startStatus(), this.handler || (this.handler = new x(this.viewer.scene.canvas)), this.point_L_ClickEvent(), this.point_L_MIDDLE_ClickEvent(), this.point_R_ClickEvent(), this.point_L_DownEvent(), this.point_L_UpEvent(), this.point_moveEvent();
115
+ }
116
+ getEntityCollection() {
117
+ return this.pointsCollection;
118
+ }
119
+ getAllPositionsData() {
120
+ return this.mainData;
121
+ }
122
+ pointsBackEdit() {
123
+ this.currentDragPoint && (this.currentDragPoint.point.color = c.TRANSPARENT, this.currentDragPoint = null, super.editStatus());
124
+ }
125
+ pointsReset() {
126
+ for (let t = 0, i = this.pointsCollection.values.length; t < i; t++) {
127
+ const e = this.pointsCollection.values[t];
128
+ this.viewer.entities.removeById(e.id);
129
+ }
130
+ this.pointsCollection.removeAll(), this.viewer.entities.removeById(this.pointsCollection.id);
131
+ }
132
+ showPosition(t) {
133
+ const i = this.viewer.camera.getPickRay(t);
134
+ if (this.textDom && i) {
135
+ const e = this.viewer.scene.globe.pick(i, this.viewer.scene), s = E.fromCartesian(e), a = d.toDegrees(s.longitude), o = d.toDegrees(s.latitude);
136
+ this.textDom.style.left = t.x + 4 + "px", this.textDom.style.top = t.y - 30 + "px", this.textDom.innerText = `${a.toFixed(4)}, ${o.toFixed(4)}`;
137
+ }
138
+ }
139
+ createBillboard(t) {
140
+ const i = E.fromCartesian(t), e = d.toDegrees(i.longitude), s = d.toDegrees(i.latitude), a = this.viewer.entities.add({
141
+ // 设置经纬度位置 (经度, 纬度, 海拔高度)
142
+ position: t,
143
+ label: {
144
+ text: `${e.toFixed(4)}, ${s.toFixed(4)}`,
145
+ font: "500 14px Helvetica",
146
+ style: I.FILL,
147
+ fillColor: c.WHITE,
148
+ pixelOffset: new B(80, -20),
149
+ //偏移量
150
+ showBackground: !0,
151
+ backgroundColor: new c(0, 0, 0, 0.6)
152
+ },
153
+ billboard: {
154
+ image: Q,
155
+ // 设置图片显示的宽度和高度 (像素)
156
+ width: 40,
157
+ height: 40,
158
+ // 可选项:缩放倍数
159
+ scale: 1,
160
+ verticalOrigin: b.BOTTOM
161
+ // 可选项:给图片叠加一个颜色,白色为原色
162
+ },
163
+ properties: {
164
+ entityType: "POINT"
165
+ },
166
+ show: !0
167
+ });
168
+ a && (this.mainData.push(t), this.pointsCollection.add(a));
169
+ }
170
+ createPoint(t) {
171
+ const i = this.viewer.entities.add({
172
+ position: t,
173
+ point: {
174
+ pixelSize: 6,
175
+ color: c.TRANSPARENT,
176
+ outlineColor: c.YELLOW,
177
+ outlineWidth: 2,
178
+ // disableDepthTestDistance: Number.POSITIVE_INFINITY,
179
+ heightReference: M.CLAMP_TO_GROUND
180
+ //贴地
181
+ },
182
+ properties: {
183
+ entityType: "POINT"
184
+ },
185
+ show: !0
186
+ });
187
+ i && (this.mainData.push(t), this.pointsCollection.add(i));
188
+ }
189
+ setMainData() {
190
+ this.mainData = [], this.pointsCollection.values.forEach((t) => {
191
+ var i;
192
+ if (t.point) {
193
+ const e = new u();
194
+ (i = t.position) == null || i.getValue(k.now(), e), this.mainData.push(e);
195
+ }
196
+ });
197
+ }
198
+ }
199
+ const U = (r, t) => {
200
+ const i = E.fromCartesian(r), e = E.fromCartesian(t);
201
+ return new G(i, e).surfaceDistance;
202
+ }, K = (r, t) => {
203
+ const i = new u();
204
+ return u.add(r, t, i), u.divideByScalar(i, 2, i), i;
205
+ }, f = (r, t, i, e = null) => {
206
+ let a = { ...{
207
+ text: i,
208
+ font: "16px sans-serif",
209
+ fillColor: c.ORANGE,
210
+ // outlineColor: Color.BLACK,
211
+ // outlineWidth: 1,
212
+ showBackground: !0,
213
+ backgroundColor: c.BLACK,
214
+ style: I.FILL_AND_OUTLINE
215
+ }, ...e }, o = {
216
+ position: t,
217
+ label: a
218
+ };
219
+ return r.entities.add(o);
220
+ }, C = (r) => {
221
+ let t = "";
222
+ return r > 1e3 ? t = (r / 1e3).toFixed(2) + " 公里" : t = r.toFixed(2) + " 米", t;
223
+ }, j = (r) => {
224
+ let t = "";
225
+ return r > 1e3 * 1e3 * 1e4 ? t = (r / (1e3 * 1e3 * 1e4)).toFixed(2) + " 万平方公里" : r > 1e3 * 1e3 ? t = (r / (1e3 * 1e3)).toFixed(2) + " 平方公里" : t = r.toFixed(2) + " 平方米", t;
226
+ }, Y = (r) => {
227
+ if (!r || r.length === 0) return null;
228
+ let t = 0, i = 0, e = 0;
229
+ const s = r.length;
230
+ return r.forEach((o) => {
231
+ t += o.x, i += o.y, e += o.z;
232
+ }), new u(
233
+ t / s,
234
+ i / s,
235
+ e / s
236
+ );
237
+ }, Z = (r) => {
238
+ if (r.length < 3) return 0;
239
+ const i = P.fromPoints(r).center, e = T.eastNorthUpToFixedFrame(i), s = g.inverse(e, new g()), a = r.map(
240
+ (l) => g.multiplyByPoint(s, l, new u())
241
+ );
242
+ let o = 0;
243
+ for (let l = 0; l < a.length; l++) {
244
+ const p = (l + 1) % a.length;
245
+ o += a[l].x * a[p].y, o -= a[p].x * a[l].y;
246
+ }
247
+ return Math.abs(o) / 2;
248
+ };
249
+ class V extends W {
250
+ constructor(t, i) {
251
+ super(t, i), this.mainLineEntity = null, this.dashLineEntity = null, this.dashEndData = new u(), this.currentIndex = -1, this.labelsCollection = new w(), this.line_L_ClickEvent = () => {
252
+ var e;
253
+ (e = this.handler) == null || e.setInputAction((s) => {
254
+ let a = this.viewer.camera.getPickRay(s.position), o = this.viewer.scene.globe.pick(a, this.viewer.scene);
255
+ A(o) && n.DRAWABLE == super.getStatus() && (super.createPoint(o), this.mainData.length > 0 && (this.mainLineEntity || this.createMainLine(), this.dashLineEntity || this.createDashLine()));
256
+ }, h.LEFT_CLICK);
257
+ }, this.line_R_ClickEvent = () => {
258
+ var e;
259
+ (e = this.handler) == null || e.setInputAction(() => {
260
+ n.DRAWABLE == super.getStatus() ? (super.editStatus(), this.dashLineEntity && (this.dashLineEntity.show = !1), this.pointsCollection.show = !0) : n.EDITING == super.getStatus() ? (super.doneStatus(), this.showDistance(), this.pointsCollection.show = !1) : n.DRAGABLE == super.getStatus() ? (super.doneStatus(), this.showDistance(), this.pointsCollection.show = !1) : n.DONE == super.getStatus() && (super.stopStatus(), this.pointsReset(), this.lineReset());
261
+ }, h.RIGHT_CLICK);
262
+ }, this.line_L_DownEvent = () => {
263
+ var e;
264
+ (e = this.handler) == null || e.setInputAction(() => {
265
+ n.DRAGABLE == super.getStatus() && (super.dragingStatus(), this.getEntityIndex(), this.viewer.scene.screenSpaceCameraController.enableRotate = !1);
266
+ }, h.LEFT_DOWN);
267
+ }, this.line_moveEvent = () => {
268
+ var e;
269
+ (e = this.handler) == null || e.setInputAction((s) => {
270
+ const a = this.viewer.camera.getPickRay(s.endPosition);
271
+ if (a) {
272
+ const o = this.viewer.scene.globe.pick(a, this.viewer.scene);
273
+ A(o) && (n.DRAWABLE == super.getStatus() ? this.mainData.length > 0 && (this.dashEndData = o) : n.EDITING == super.getStatus() ? this.pickPoint(s.endPosition) : n.DRAGABLE == super.getStatus() ? (this.pointsBackEdit(), this.currentIndex = -1) : n.DRAGING == super.getStatus() && this.moveLine(o));
274
+ }
275
+ }, h.MOUSE_MOVE);
276
+ }, this.createMainLine = () => {
277
+ this.mainLineEntity = this.viewer.entities.add({
278
+ polyline: {
279
+ positions: new D(() => this.mainData, !1),
280
+ // 宽度
281
+ width: 2,
282
+ // 线的颜色
283
+ material: c.RED,
284
+ // 是否显示
285
+ show: !0,
286
+ clampToGround: !0
287
+ },
288
+ properties: {
289
+ entityType: "LINE"
290
+ }
291
+ });
292
+ };
293
+ }
294
+ start() {
295
+ super.start(), this.viewer.entities.add(this.labelsCollection), this.pointsCollection.show = !1, this.line_L_ClickEvent(), this.line_R_ClickEvent(), this.line_L_DownEvent(), this.line_moveEvent();
296
+ }
297
+ moveLine(t) {
298
+ this.currentDragPoint && (this.currentDragPoint.position = new v(() => t, !1), this.currentIndex > -1 && (this.mainData[this.currentIndex] = t));
299
+ }
300
+ getEntityIndex() {
301
+ for (let t = 0, i = this.pointsCollection.values.length; t < i; t++)
302
+ if (this.pointsCollection.values[t].id == this.currentDragPoint.id) {
303
+ this.currentIndex = t;
304
+ break;
305
+ }
306
+ }
307
+ //创建临时虚线
308
+ createDashLine() {
309
+ this.dashLineEntity = this.viewer.entities.add({
310
+ polyline: {
311
+ positions: new D(() => {
312
+ const t = this.mainData.length;
313
+ let i = this.mainData[t - 1];
314
+ return this.dashEndData.x == 0 && this.dashEndData.y == 0 && this.dashEndData.z == 0 && (this.dashEndData = i), [i, this.dashEndData];
315
+ }, !1),
316
+ // 宽度
317
+ width: 2,
318
+ material: new O({
319
+ color: c.RED,
320
+ dashLength: 15
321
+ }),
322
+ // 是否显示
323
+ show: !0,
324
+ clampToGround: !0
325
+ },
326
+ properties: {
327
+ entityType: "DASHLINE"
328
+ }
329
+ });
330
+ }
331
+ lineReset() {
332
+ this.labelsCollection.show = !1, this.mainLineEntity && this.viewer.entities.remove(this.mainLineEntity), this.dashLineEntity && this.viewer.entities.remove(this.dashLineEntity), this.mainLineEntity = null, this.dashLineEntity = null, console.log(this.viewer.entities);
333
+ for (let t = 0, i = this.labelsCollection.values.length; t < i; t++) {
334
+ const e = this.labelsCollection.values[t];
335
+ this.viewer.entities.removeById(e.id);
336
+ }
337
+ this.labelsCollection.removeAll(), this.viewer.entities.removeById(this.labelsCollection.id);
338
+ }
339
+ showDistance() {
340
+ let t = 0, i = this.mainData.length;
341
+ for (let l = 1; l < i; l++) {
342
+ const p = this.mainData[l - 1], y = this.mainData[l], L = K(p, y), m = U(p, y);
343
+ t += m;
344
+ let S = C(m), R = f(this.viewer, L, S);
345
+ this.labelsCollection.add(R);
346
+ }
347
+ let e = { font: "20px", fillColor: c.WHITE, outlineWidth: 0 }, s = this.mainData[i - 1], a = "共: " + C(t), o = f(this.viewer, s, a, e);
348
+ this.labelsCollection.add(o);
349
+ }
350
+ }
351
+ class H extends V {
352
+ constructor(t, i) {
353
+ super(t, i), this.polygonEntity = null, this.areaText = null, this.polygon_L_ClickEvent = () => {
354
+ var e;
355
+ (e = this.handler) == null || e.setInputAction((s) => {
356
+ let a = this.viewer.camera.getPickRay(s.position), o = this.viewer.scene.globe.pick(a, this.viewer.scene);
357
+ A(o) && n.DRAWABLE == super.getStatus() && (super.createPoint(o), this.mainData.length > 0 && (this.mainLineEntity || this.createMainLine(), this.dashLineEntity || this.createDashLine(), !this.polygonEntity && this.mainData.length > 2 && this.createPolygon()));
358
+ }, h.LEFT_CLICK);
359
+ }, this.polygon_R_ClickEvent = () => {
360
+ var e;
361
+ (e = this.handler) == null || e.setInputAction(() => {
362
+ n.DRAWABLE == super.getStatus() ? (super.editStatus(), this.dashLineEntity && (this.dashLineEntity.show = !1), this.pointsCollection.show = !0) : n.EDITING == super.getStatus() ? (super.doneStatus(), this.showArea(), this.pointsCollection.show = !1) : n.DRAGABLE == super.getStatus() ? (super.doneStatus(), this.showArea(), this.pointsCollection.show = !1) : n.DONE == super.getStatus() && (super.stopStatus(), this.pointsReset(), this.lineReset(), this.polygonReset());
363
+ }, h.RIGHT_CLICK);
364
+ }, this.createPolygon = () => {
365
+ this.polygonEntity = this.viewer.entities.add({
366
+ polygon: {
367
+ hierarchy: new D(() => new N(this.mainData), !1),
368
+ material: c.RED.withAlpha(0.4),
369
+ outline: !1
370
+ },
371
+ properties: {
372
+ entityType: "POLYGON"
373
+ }
374
+ }), console.log(this.polygonEntity);
375
+ };
376
+ }
377
+ start() {
378
+ super.start(), this.polygon_L_ClickEvent(), this.polygon_R_ClickEvent();
379
+ }
380
+ showArea() {
381
+ let t = Y(this.mainData);
382
+ if (t) {
383
+ let i = Z(this.mainData);
384
+ const e = j(i);
385
+ this.areaText = f(this.viewer, t, e);
386
+ }
387
+ }
388
+ polygonReset() {
389
+ this.polygonEntity && this.viewer.entities.remove(this.polygonEntity), this.areaText && this.viewer.entities.remove(this.areaText);
390
+ }
391
+ }
392
+ export {
393
+ V as L,
394
+ W as P,
395
+ H as a
396
+ };
@@ -0,0 +1,76 @@
1
+ import { Color as e, PinBuilder as c, VerticalOrigin as s } from "cesium";
2
+ const T = {
3
+ DEFAULT: Symbol("default"),
4
+ TEXT: Symbol("text"),
5
+ ICON: Symbol("icon")
6
+ }, B = {
7
+ HOSPITAL: { name: "hospital", color: e.RED },
8
+ SCHOOL: { name: "school-JP", color: e.BLUE },
9
+ LIBRARY: { name: "library", color: e.BLUE },
10
+ BANK: { name: "bank-JP", color: e.BLUE },
11
+ AIRPORT: { name: "airport", color: e.BLUE },
12
+ FIRE_STATION: { name: "fire-station", color: e.RED },
13
+ BUS: { name: "airport", color: e.BLUE },
14
+ GAS_STATION: { name: "charging-station", color: e.BLUE },
15
+ PARKING: { name: "parking", color: e.BLUE },
16
+ POLICE: { name: "police", color: e.BLUE },
17
+ RAIL: { name: "rail", color: e.BLUE },
18
+ RESTAURANT: { name: "restaurant", color: e.BLUE }
19
+ }, m = "cp-pin", L = (i, a, n, o = 48) => {
20
+ const r = new c();
21
+ return Promise.resolve(
22
+ r.fromMakiIconId(n.name, n.color, o)
23
+ ).then(function(t) {
24
+ return i.entities.add({
25
+ id: "def" + p(),
26
+ name: n.name,
27
+ position: a,
28
+ billboard: {
29
+ image: t.toDataURL(),
30
+ verticalOrigin: s.BOTTOM,
31
+ disableDepthTestDistance: 0
32
+ // 开启深度测试,被地球/地形遮挡
33
+ },
34
+ properties: { cpType: m }
35
+ });
36
+ }).catch((t) => (console.error("图标获取失败" + t), null));
37
+ }, O = (i, a, n = "", o = e.BLUE, r = 48) => {
38
+ const t = new c();
39
+ return i.entities.add({
40
+ id: "txt" + p(),
41
+ name: n,
42
+ position: a,
43
+ billboard: {
44
+ image: t.fromText(n, o, r).toDataURL(),
45
+ verticalOrigin: s.BOTTOM,
46
+ disableDepthTestDistance: 0
47
+ // 开启深度测试,被地球/地形遮挡
48
+ },
49
+ properties: { cpType: m }
50
+ });
51
+ }, u = (i, a, n, o = e.BLUE, r = 48) => {
52
+ console.log(n), console.log(o), console.log(r);
53
+ const t = new c();
54
+ return Promise.resolve(
55
+ t.fromUrl(n, o, r)
56
+ ).then((l) => i.entities.add({
57
+ id: "img" + p(),
58
+ name: "",
59
+ position: a,
60
+ billboard: {
61
+ image: l.toDataURL(),
62
+ verticalOrigin: s.BOTTOM,
63
+ disableDepthTestDistance: 0
64
+ // 开启深度测试,被地球/地形遮挡
65
+ },
66
+ properties: { cpType: m }
67
+ })).catch((l) => (console.error("图标获取失败" + l), null));
68
+ }, p = () => (/* @__PURE__ */ new Date()).getTime().toString();
69
+ export {
70
+ m as C,
71
+ T as P,
72
+ B as a,
73
+ L as b,
74
+ u as c,
75
+ O as d
76
+ };