@soonspacejs/plugin-tiles 2.15.14 → 2.15.15
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/dist/index.esm.js +381 -334
- package/dist/plot/emergency-resource-icons.d.ts +21 -0
- package/dist/plot/index.d.ts +2 -0
- package/dist/plot/plugins/types.d.ts +21 -7
- package/package.json +3 -3
package/dist/index.esm.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import
|
|
1
|
+
import I from "soonspacejs";
|
|
2
2
|
import { TilesRenderer as T } from "um-3d-tiles-renderer";
|
|
3
|
-
import { GLTFLoader as
|
|
4
|
-
import { MathUtils as f, MeshBasicMaterial as
|
|
5
|
-
import { TilesFadePlugin as
|
|
6
|
-
import { CesiumGroundTextPrimitive as k, CesiumGroundPolylinePrimitive as
|
|
7
|
-
import { createFineArrow as W, createCurvedArrow as
|
|
8
|
-
class
|
|
3
|
+
import { GLTFLoader as de } from "three/examples/jsm/loaders/GLTFLoader.js";
|
|
4
|
+
import { MathUtils as f, MeshBasicMaterial as he, Color as L, PerspectiveCamera as V, Matrix4 as b, Vector3 as Oe, Box3 as Me, Sphere as ue, MeshStandardMaterial as Se, ShaderMaterial as Z } from "three";
|
|
5
|
+
import { TilesFadePlugin as B, UpdateOnChangePlugin as H, QuantizedMeshPlugin as J, ImageOverlayPlugin as ce, XYZTilesOverlay as pe, ReorientationPlugin as j, StyledGeoJSONOverlay as K, CesiumIonOverlay as we, TMSTilesOverlay as Ce, UrlTemplateTilesOverlay as be, WMSTilesOverlay as Te, WMTSCapabilitiesLoader as Pe, WMTSTilesOverlay as Ee, CesiumIonAuthPlugin as ge } from "um-3d-tiles-renderer/plugins";
|
|
6
|
+
import { CesiumGroundTextPrimitive as k, CesiumGroundPolylinePrimitive as R, CesiumGroundPolygonPrimitive as ee, CesiumGroundCirclePrimitive as te, CesiumGroundPointPrimitive as re, initializeApproximateTerrainHeights as ke, updateTerrainLogDepthUniforms as xe, CesiumGlobeDepth as Re, CESIUM_GROUND_NON_PICKABLE_LAYER as Ie } from "cesium-to-three/ground";
|
|
7
|
+
import { createFineArrow as W, createCurvedArrow as fe, createSwallowtailAttackArrow as ye, createAttackArrow as me, createAssaultDirectionArrow as ve } from "cesium-to-three/arrow";
|
|
8
|
+
class Ne {
|
|
9
9
|
constructor(e) {
|
|
10
10
|
this.parser = e, this.name = "KHR_texture_basisu_patch";
|
|
11
11
|
}
|
|
12
12
|
loadTexture(e) {
|
|
13
|
-
const t = this.parser, r = t.json,
|
|
14
|
-
if (!
|
|
13
|
+
const t = this.parser, r = t.json, n = r.textures[e].source, a = r.images[n];
|
|
14
|
+
if (!a || a.mimeType !== "image/ktx2")
|
|
15
15
|
return null;
|
|
16
16
|
const o = t.options.ktx2Loader;
|
|
17
17
|
if (!o)
|
|
18
|
-
throw new Error(`${
|
|
19
|
-
return t.loadTextureImage(e,
|
|
18
|
+
throw new Error(`${I.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
|
|
19
|
+
return t.loadTextureImage(e, n, o);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
class
|
|
22
|
+
class bt {
|
|
23
23
|
constructor(e) {
|
|
24
24
|
this.ssp = e;
|
|
25
25
|
const { controls: t, viewport: r } = e;
|
|
@@ -46,15 +46,15 @@ class Mt {
|
|
|
46
46
|
downloadQueue = null;
|
|
47
47
|
async loadTiles(e) {
|
|
48
48
|
if (this.tilesMap.has(e)) {
|
|
49
|
-
|
|
49
|
+
I.utils.warn(`${e} already loaded`);
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
const { ssp: t, ssp: { viewport: r } } = this, i = new T(e);
|
|
53
53
|
this.lruCache === null ? this.lruCache = i.lruCache : i.lruCache = this.lruCache, this.parseQueue === null ? this.parseQueue = i.parseQueue : i.parseQueue = this.parseQueue, this.downloadQueue === null ? this.downloadQueue = i.downloadQueue : i.downloadQueue = this.downloadQueue;
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
const { dracoLoader:
|
|
57
|
-
|
|
54
|
+
const n = new de(i.manager);
|
|
55
|
+
n.register((h) => new Ne(h));
|
|
56
|
+
const { dracoLoader: a, ktx2Loader: o, meshoptDecoder: d } = t.manager.store.modelManager.gltfLoader;
|
|
57
|
+
a && n.setDRACOLoader(a), o && n.setKTX2Loader(o), d && n.setMeshoptDecoder(d), i.manager.addHandler(/\.gltf$/, n), this.tilesMap.set(e, i), i.setCamera(this._tilesCamera), i.setResolutionFromRenderer(this._tilesCamera, r.renderer), i.lruCache.maxSize = 600, i.lruCache.minSize = 300, i.lruCache.unloadPercent = 0.8, t.addObject(i.group);
|
|
58
58
|
const l = () => {
|
|
59
59
|
this.cameraTransitionStart || (this.needsUpdate = !0, t.render());
|
|
60
60
|
};
|
|
@@ -69,27 +69,27 @@ class Mt {
|
|
|
69
69
|
return t ? (t.dispose(), this.tilesMap.delete(e), this.ssp.removeObject(t.group), !0) : !1;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
let
|
|
72
|
+
let Ae = class {
|
|
73
73
|
priority = -999;
|
|
74
74
|
processTileModel(e) {
|
|
75
75
|
e.traverse((t) => {
|
|
76
|
-
t.material && (t.material = new
|
|
76
|
+
t.material && (t.material = new he());
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
|
-
const
|
|
81
|
-
class
|
|
80
|
+
const Le = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/";
|
|
81
|
+
class Pt {
|
|
82
82
|
constructor(e) {
|
|
83
|
-
this.ssp = e, this.tiles = new T(
|
|
83
|
+
this.ssp = e, this.tiles = new T(Le), this.tiles.fetchData = async (t, r) => {
|
|
84
84
|
if (/layer\.json$/.test(t)) {
|
|
85
|
-
const i = await fetch(t, r).then((
|
|
85
|
+
const i = await fetch(t, r).then((n) => n.json());
|
|
86
86
|
return i.metadataAvailability = -1, new Response(JSON.stringify(i));
|
|
87
87
|
}
|
|
88
88
|
return fetch(t, r);
|
|
89
|
-
}, this.tilesFadePlugin = new
|
|
89
|
+
}, this.tilesFadePlugin = new B({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new H(), this.quantizedPlugin = new J({}), this.customMaterialPlugin = new Ae(), this.imageOverlayPlugin = new ce({
|
|
90
90
|
renderer: e.viewport.renderer,
|
|
91
91
|
overlays: [
|
|
92
|
-
new
|
|
92
|
+
new pe({
|
|
93
93
|
url: "https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
|
|
94
94
|
})
|
|
95
95
|
]
|
|
@@ -124,16 +124,16 @@ class wt {
|
|
|
124
124
|
}
|
|
125
125
|
invalidate(e, t, r) {
|
|
126
126
|
const i = () => {
|
|
127
|
-
const
|
|
127
|
+
const a = f.degToRad(t), o = f.degToRad(e);
|
|
128
128
|
this.reorientationPlugin.transformLatLonHeightToOrigin(
|
|
129
|
-
|
|
129
|
+
a,
|
|
130
130
|
o,
|
|
131
131
|
r
|
|
132
|
-
), this.ssp.render(),
|
|
133
|
-
},
|
|
132
|
+
), this.ssp.render(), n();
|
|
133
|
+
}, n = () => {
|
|
134
134
|
this.tiles.removeEventListener("load-root-tileset", i), this.loedTilesSets.delete(i);
|
|
135
135
|
};
|
|
136
|
-
return this.tiles.addEventListener("load-root-tileset", i), this.loedTilesSets.add(i), this.tiles.root && i(),
|
|
136
|
+
return this.tiles.addEventListener("load-root-tileset", i), this.loedTilesSets.add(i), this.tiles.root && i(), n;
|
|
137
137
|
}
|
|
138
138
|
dispose() {
|
|
139
139
|
this.disable(), this.loedTilesSets.forEach(
|
|
@@ -141,7 +141,7 @@ class wt {
|
|
|
141
141
|
), this.loedTilesSets.clear(), this.tiles.removeEventListener("needs-render", this.render), this.tiles.removeEventListener("needs-update", this.render), this.tiles.dispose();
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
class
|
|
144
|
+
class De {
|
|
145
145
|
// 使用较低的 priority 确保在 ImageOverlayPlugin 之后执行
|
|
146
146
|
// ImageOverlayPlugin 默认 priority 是 -1
|
|
147
147
|
priority = -999;
|
|
@@ -152,7 +152,7 @@ class Le {
|
|
|
152
152
|
*/
|
|
153
153
|
processTileModel(e) {
|
|
154
154
|
e.traverse((t) => {
|
|
155
|
-
t.material && (t.material = new
|
|
155
|
+
t.material && (t.material = new he());
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
/**
|
|
@@ -210,17 +210,17 @@ class N {
|
|
|
210
210
|
...this._getGeoJSONModeFlags(r)
|
|
211
211
|
};
|
|
212
212
|
e.color !== void 0 && (i.color = new L(e.color));
|
|
213
|
-
const
|
|
214
|
-
return t.addOverlay(
|
|
213
|
+
const n = new K(i);
|
|
214
|
+
return t.addOverlay(n, e.order), this._instances.set(e.id, {
|
|
215
215
|
id: e.id,
|
|
216
216
|
type: e.type,
|
|
217
|
-
instance:
|
|
217
|
+
instance: n,
|
|
218
218
|
options: { ...e, mode: r }
|
|
219
219
|
}), this.resourceManager?.addOverlay({
|
|
220
220
|
id: e.id,
|
|
221
221
|
type: e.type,
|
|
222
222
|
options: e
|
|
223
|
-
}),
|
|
223
|
+
}), n;
|
|
224
224
|
}
|
|
225
225
|
updateGeoJSONColor(e, t) {
|
|
226
226
|
const r = this._instances.get(e);
|
|
@@ -231,62 +231,62 @@ class N {
|
|
|
231
231
|
updateGeoJSONDefaultStyle(e, t) {
|
|
232
232
|
const r = this._instances.get(e);
|
|
233
233
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
234
|
-
const i = r.instance,
|
|
235
|
-
...
|
|
234
|
+
const i = r.instance, n = r.options, a = {
|
|
235
|
+
...n.defaultStyle || {},
|
|
236
236
|
...t
|
|
237
237
|
}, o = {
|
|
238
|
-
...
|
|
239
|
-
defaultStyle:
|
|
238
|
+
...n,
|
|
239
|
+
defaultStyle: a
|
|
240
240
|
};
|
|
241
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle:
|
|
241
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle: a }), !0;
|
|
242
242
|
}
|
|
243
243
|
updateGeoJSONStrokeStyle(e, t) {
|
|
244
244
|
const r = this._instances.get(e);
|
|
245
245
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
246
|
-
const i = r.instance,
|
|
247
|
-
...
|
|
246
|
+
const i = r.instance, n = r.options, a = {
|
|
247
|
+
...n.defaultStyle || {},
|
|
248
248
|
strokeStyle: t
|
|
249
249
|
}, o = {
|
|
250
|
-
...
|
|
250
|
+
...n,
|
|
251
251
|
strokeStyle: t,
|
|
252
|
-
defaultStyle:
|
|
252
|
+
defaultStyle: a
|
|
253
253
|
};
|
|
254
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle:
|
|
254
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle: a }), !0;
|
|
255
255
|
}
|
|
256
256
|
updateGeoJSONStrokeWidth(e, t) {
|
|
257
257
|
const r = this._instances.get(e);
|
|
258
258
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
259
|
-
const i = r.instance,
|
|
260
|
-
...
|
|
259
|
+
const i = r.instance, n = r.options, a = {
|
|
260
|
+
...n.defaultStyle || {},
|
|
261
261
|
strokeWidth: t
|
|
262
262
|
}, o = {
|
|
263
|
-
...
|
|
263
|
+
...n,
|
|
264
264
|
strokeWidth: t,
|
|
265
|
-
defaultStyle:
|
|
265
|
+
defaultStyle: a
|
|
266
266
|
};
|
|
267
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle:
|
|
267
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle: a }), !0;
|
|
268
268
|
}
|
|
269
269
|
updateGeoJSONFillStyle(e, t) {
|
|
270
270
|
const r = this._instances.get(e);
|
|
271
271
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
272
|
-
const i = r.instance,
|
|
273
|
-
...
|
|
272
|
+
const i = r.instance, n = r.options, a = {
|
|
273
|
+
...n.defaultStyle || {},
|
|
274
274
|
fillStyle: t
|
|
275
275
|
}, o = {
|
|
276
|
-
...
|
|
276
|
+
...n,
|
|
277
277
|
fillStyle: t,
|
|
278
|
-
defaultStyle:
|
|
278
|
+
defaultStyle: a
|
|
279
279
|
};
|
|
280
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle:
|
|
280
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle: a }), !0;
|
|
281
281
|
}
|
|
282
282
|
updateGeoJSONMode(e, t) {
|
|
283
283
|
const r = this._instances.get(e);
|
|
284
284
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
285
|
-
const i = r.instance,
|
|
285
|
+
const i = r.instance, n = {
|
|
286
286
|
...r.options,
|
|
287
287
|
mode: t
|
|
288
|
-
},
|
|
289
|
-
return i.alphaInvert =
|
|
288
|
+
}, a = this._getGeoJSONModeFlags(t);
|
|
289
|
+
return i.alphaInvert = a.alphaInvert, i.alphaMask = a.alphaMask, i.defaultStyle = this._buildGeoJSONDefaultStyle(n, t), i.requestUpdate?.(), this._updateOverlayOptions(e, { mode: t }), !0;
|
|
290
290
|
}
|
|
291
291
|
setGeoJSON(e, t) {
|
|
292
292
|
const r = this._instances.get(e);
|
|
@@ -301,8 +301,8 @@ class N {
|
|
|
301
301
|
setMergedGeoJSON(e, t, r) {
|
|
302
302
|
const i = this._instances.get(e);
|
|
303
303
|
if (!i || i.type !== u.GEOJSON) return null;
|
|
304
|
-
const
|
|
305
|
-
return this._updateOverlayOptions(e, { geojson:
|
|
304
|
+
const a = i.instance.setMergedGeoJSON(t, r);
|
|
305
|
+
return this._updateOverlayOptions(e, { geojson: a }), a;
|
|
306
306
|
}
|
|
307
307
|
getGeoJSONFeatureById(e, t) {
|
|
308
308
|
const r = this._instances.get(e);
|
|
@@ -328,7 +328,7 @@ class N {
|
|
|
328
328
|
addCesiumIonOverlay(e) {
|
|
329
329
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
330
330
|
if (!t) return null;
|
|
331
|
-
const r = new
|
|
331
|
+
const r = new we({
|
|
332
332
|
assetId: e.assetId,
|
|
333
333
|
apiToken: e.apiToken,
|
|
334
334
|
autoRefreshToken: e.autoRefreshToken ?? !0,
|
|
@@ -350,7 +350,7 @@ class N {
|
|
|
350
350
|
addTMSOverlay(e) {
|
|
351
351
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
352
352
|
if (!t) return null;
|
|
353
|
-
const r = new
|
|
353
|
+
const r = new Ce({
|
|
354
354
|
url: e.url,
|
|
355
355
|
color: typeof e.color == "number" ? e.color : 16777215,
|
|
356
356
|
opacity: e.opacity ?? 1
|
|
@@ -370,7 +370,7 @@ class N {
|
|
|
370
370
|
addXYZOverlay(e) {
|
|
371
371
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
372
372
|
if (!t) return null;
|
|
373
|
-
const r = new
|
|
373
|
+
const r = new pe({
|
|
374
374
|
url: e.url,
|
|
375
375
|
color: typeof e.color == "number" ? e.color : 16777215,
|
|
376
376
|
opacity: e.opacity ?? 1
|
|
@@ -421,7 +421,7 @@ class N {
|
|
|
421
421
|
addUrlTemplateOverlay(e) {
|
|
422
422
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
423
423
|
if (!t) return null;
|
|
424
|
-
const r = new
|
|
424
|
+
const r = new be({
|
|
425
425
|
url: e.url,
|
|
426
426
|
subdomains: e.subdomains,
|
|
427
427
|
levels: e.levels,
|
|
@@ -453,7 +453,7 @@ class N {
|
|
|
453
453
|
crs: e.crs || "EPSG:4326",
|
|
454
454
|
format: e.format || "image/png",
|
|
455
455
|
tileDimension: e.tileDimension || 256
|
|
456
|
-
}, i = new
|
|
456
|
+
}, i = new Te({
|
|
457
457
|
url: e.url,
|
|
458
458
|
layer: r.layer,
|
|
459
459
|
crs: r.crs,
|
|
@@ -478,14 +478,14 @@ class N {
|
|
|
478
478
|
async addWMTSOverlay(e) {
|
|
479
479
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
480
480
|
if (!t) return null;
|
|
481
|
-
const r = await new
|
|
482
|
-
let
|
|
483
|
-
r.layers.find((o) => o.identifier ===
|
|
481
|
+
const r = await new Pe().loadAsync(e.url), i = ["EPSG:4326", "EPSG:3857"];
|
|
482
|
+
let n = e.layer || "";
|
|
483
|
+
r.layers.find((o) => o.identifier === n) || (n = r.layers.find(
|
|
484
484
|
(o) => o?.tileMatrixSets?.some((d) => i.includes(d.supportedCRS))
|
|
485
485
|
)?.identifier || r.layers[0].identifier);
|
|
486
|
-
const
|
|
486
|
+
const a = new Ee({
|
|
487
487
|
capabilities: r,
|
|
488
|
-
layer:
|
|
488
|
+
layer: n,
|
|
489
489
|
dimensions: e.dimensions || null,
|
|
490
490
|
style: e.style || void 0,
|
|
491
491
|
tileMatrixSet: e.tileMatrixSet || null,
|
|
@@ -493,16 +493,16 @@ class N {
|
|
|
493
493
|
color: new L(typeof e.color == "number" ? e.color : 16777215),
|
|
494
494
|
opacity: e.opacity ?? 1
|
|
495
495
|
});
|
|
496
|
-
return t.addOverlay(
|
|
496
|
+
return t.addOverlay(a, e.order), this._instances.set(e.id, {
|
|
497
497
|
id: e.id,
|
|
498
498
|
type: e.type,
|
|
499
|
-
instance:
|
|
499
|
+
instance: a,
|
|
500
500
|
options: { ...e }
|
|
501
501
|
}), this.resourceManager?.addOverlay({
|
|
502
502
|
id: e.id,
|
|
503
503
|
type: e.type,
|
|
504
504
|
options: e
|
|
505
|
-
}),
|
|
505
|
+
}), a;
|
|
506
506
|
}
|
|
507
507
|
// =============== 通用方法 ===============
|
|
508
508
|
/**
|
|
@@ -570,8 +570,8 @@ class N {
|
|
|
570
570
|
if (!t) return !1;
|
|
571
571
|
const r = this.imageOverlayPlugin.overlayInfo;
|
|
572
572
|
let i = 0;
|
|
573
|
-
return r.forEach((
|
|
574
|
-
|
|
573
|
+
return r.forEach((n) => {
|
|
574
|
+
n.order > i && (i = n.order);
|
|
575
575
|
}), this.imageOverlayPlugin.setOverlayOrder(t.instance, i + 1), this._updateOverlayOptions(e, { order: i + 1 }), !0;
|
|
576
576
|
}
|
|
577
577
|
/**
|
|
@@ -583,8 +583,8 @@ class N {
|
|
|
583
583
|
if (!t) return !1;
|
|
584
584
|
const r = this.imageOverlayPlugin.overlayInfo;
|
|
585
585
|
let i = 1 / 0;
|
|
586
|
-
return r.forEach((
|
|
587
|
-
|
|
586
|
+
return r.forEach((n) => {
|
|
587
|
+
n.order < i && (i = n.order);
|
|
588
588
|
}), this.imageOverlayPlugin.setOverlayOrder(t.instance, i - 1), this._updateOverlayOptions(e, { order: i - 1 }), !0;
|
|
589
589
|
}
|
|
590
590
|
// =============== 资源恢复 ===============
|
|
@@ -668,7 +668,7 @@ class N {
|
|
|
668
668
|
};
|
|
669
669
|
}
|
|
670
670
|
_getGeoJSONUtilityOverlay() {
|
|
671
|
-
return this._geoJSONUtilityOverlay || (this._geoJSONUtilityOverlay = new
|
|
671
|
+
return this._geoJSONUtilityOverlay || (this._geoJSONUtilityOverlay = new K({})), this._geoJSONUtilityOverlay;
|
|
672
672
|
}
|
|
673
673
|
_updateOverlayOptions(e, t) {
|
|
674
674
|
const r = this._instances.get(e);
|
|
@@ -704,7 +704,7 @@ class N {
|
|
|
704
704
|
this.disposeInstances(), this.resourceManager?.clear();
|
|
705
705
|
}
|
|
706
706
|
}
|
|
707
|
-
class
|
|
707
|
+
class Ge {
|
|
708
708
|
/** Overlay 资源配置 */
|
|
709
709
|
_overlays = /* @__PURE__ */ new Map();
|
|
710
710
|
// =============== Overlay 资源管理 ===============
|
|
@@ -794,7 +794,7 @@ class De {
|
|
|
794
794
|
e.overlays && (this._overlays.clear(), e.overlays.forEach((t) => this._overlays.set(t.id, { ...t })));
|
|
795
795
|
}
|
|
796
796
|
}
|
|
797
|
-
class
|
|
797
|
+
class Fe {
|
|
798
798
|
/** 地形配置映射表 */
|
|
799
799
|
_terrains = /* @__PURE__ */ new Map();
|
|
800
800
|
/** 当前激活的地形 ID */
|
|
@@ -883,7 +883,7 @@ class Ge {
|
|
|
883
883
|
this.clear();
|
|
884
884
|
}
|
|
885
885
|
}
|
|
886
|
-
let
|
|
886
|
+
let Ue = 1;
|
|
887
887
|
class O {
|
|
888
888
|
/** 自增字符串 id('1' / '2' / '3' ...) */
|
|
889
889
|
id;
|
|
@@ -898,7 +898,7 @@ class O {
|
|
|
898
898
|
*/
|
|
899
899
|
options;
|
|
900
900
|
constructor(e) {
|
|
901
|
-
this.id = String(
|
|
901
|
+
this.id = String(Ue++), this.category = "", this.options = { ...e }, this.options.points && (this.options.points = this.options.points.map(
|
|
902
902
|
(t) => [t[0], t[1]]
|
|
903
903
|
));
|
|
904
904
|
}
|
|
@@ -964,7 +964,7 @@ class Je extends O {
|
|
|
964
964
|
return this.getCenterPoints();
|
|
965
965
|
}
|
|
966
966
|
}
|
|
967
|
-
class
|
|
967
|
+
class We extends O {
|
|
968
968
|
category = "line";
|
|
969
969
|
constructor(e) {
|
|
970
970
|
super(e);
|
|
@@ -974,7 +974,7 @@ class Ue extends O {
|
|
|
974
974
|
this.options = { ...this.options, ...e };
|
|
975
975
|
}
|
|
976
976
|
}
|
|
977
|
-
class
|
|
977
|
+
class $e extends O {
|
|
978
978
|
category = "polygon";
|
|
979
979
|
constructor(e) {
|
|
980
980
|
super(e);
|
|
@@ -984,7 +984,7 @@ class We extends O {
|
|
|
984
984
|
this.options = { ...this.options, ...e };
|
|
985
985
|
}
|
|
986
986
|
}
|
|
987
|
-
class
|
|
987
|
+
class ze extends O {
|
|
988
988
|
category = "rectangle";
|
|
989
989
|
constructor(e) {
|
|
990
990
|
super(e);
|
|
@@ -994,8 +994,8 @@ class $e extends O {
|
|
|
994
994
|
this.options = { ...this.options, ...e };
|
|
995
995
|
}
|
|
996
996
|
}
|
|
997
|
-
const
|
|
998
|
-
class
|
|
997
|
+
const Be = f.DEG2RAD, ie = 111320;
|
|
998
|
+
class He extends O {
|
|
999
999
|
category = "sector";
|
|
1000
1000
|
constructor(e) {
|
|
1001
1001
|
super(e);
|
|
@@ -1008,10 +1008,10 @@ class Be extends O {
|
|
|
1008
1008
|
getExtentPoints() {
|
|
1009
1009
|
const e = this.options.points;
|
|
1010
1010
|
if (!e || e.length === 0) return [];
|
|
1011
|
-
const t = e[0][0], r = e[0][1], i = this.options.radius || 0,
|
|
1011
|
+
const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (ie * Math.cos(r * Be)), a = i / ie;
|
|
1012
1012
|
return [
|
|
1013
|
-
[t -
|
|
1014
|
-
[t +
|
|
1013
|
+
[t - n, r - a],
|
|
1014
|
+
[t + n, r + a]
|
|
1015
1015
|
];
|
|
1016
1016
|
}
|
|
1017
1017
|
}
|
|
@@ -1046,16 +1046,16 @@ class je extends O {
|
|
|
1046
1046
|
this.generatedCoords = W(e[0], e[1]);
|
|
1047
1047
|
break;
|
|
1048
1048
|
case "assaultDirection":
|
|
1049
|
-
this.generatedCoords =
|
|
1049
|
+
this.generatedCoords = ve(e[0], e[1]);
|
|
1050
1050
|
break;
|
|
1051
1051
|
case "attack":
|
|
1052
|
-
this.generatedCoords =
|
|
1052
|
+
this.generatedCoords = me(e);
|
|
1053
1053
|
break;
|
|
1054
1054
|
case "swallowtailAttack":
|
|
1055
|
-
this.generatedCoords =
|
|
1055
|
+
this.generatedCoords = ye(e);
|
|
1056
1056
|
break;
|
|
1057
1057
|
case "curved":
|
|
1058
|
-
this.generatedCoords =
|
|
1058
|
+
this.generatedCoords = fe(e);
|
|
1059
1059
|
break;
|
|
1060
1060
|
default:
|
|
1061
1061
|
this.generatedCoords = W(e[0], e[e.length - 1]);
|
|
@@ -1104,7 +1104,7 @@ class Qe extends O {
|
|
|
1104
1104
|
return this.getCenterPoints();
|
|
1105
1105
|
}
|
|
1106
1106
|
}
|
|
1107
|
-
const
|
|
1107
|
+
const Ye = f.DEG2RAD, se = 111320;
|
|
1108
1108
|
class Xe extends O {
|
|
1109
1109
|
category = "circle";
|
|
1110
1110
|
constructor(e) {
|
|
@@ -1118,27 +1118,52 @@ class Xe extends O {
|
|
|
1118
1118
|
getExtentPoints() {
|
|
1119
1119
|
const e = this.options.points;
|
|
1120
1120
|
if (!e || e.length === 0) return [];
|
|
1121
|
-
const t = e[0][0], r = e[0][1], i = this.options.radius || 0,
|
|
1121
|
+
const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (se * Math.cos(r * Ye)), a = i / se;
|
|
1122
1122
|
return [
|
|
1123
|
-
[t -
|
|
1124
|
-
[t +
|
|
1123
|
+
[t - n, r - a],
|
|
1124
|
+
[t + n, r + a]
|
|
1125
1125
|
];
|
|
1126
1126
|
}
|
|
1127
1127
|
}
|
|
1128
|
-
const
|
|
1129
|
-
function
|
|
1128
|
+
const qe = 3, Ve = 1e3;
|
|
1129
|
+
function Ze(s) {
|
|
1130
1130
|
return Number.isFinite(s) ? Math.max(Math.round(s), 0) : 0;
|
|
1131
1131
|
}
|
|
1132
|
-
function
|
|
1133
|
-
const e =
|
|
1132
|
+
function Ke(s) {
|
|
1133
|
+
const e = Ze(s), t = Ve + e * qe;
|
|
1134
1134
|
if (!Number.isSafeInteger(t))
|
|
1135
1135
|
throw new Error("Plot renderOrder exceeded JavaScript safe integer range.");
|
|
1136
1136
|
return t;
|
|
1137
1137
|
}
|
|
1138
|
-
|
|
1139
|
-
|
|
1138
|
+
const $ = {
|
|
1139
|
+
OutdoorFireHydrant: "outdoor-hydrant.svg",
|
|
1140
|
+
UndergroundHydrant: "outdoor-hydrant-underground.svg",
|
|
1141
|
+
AboveGroundHydrant: "outdoor-hydrant-above-ground.svg",
|
|
1142
|
+
MunicipalFireHydrants: "municipal-hydrant.svg",
|
|
1143
|
+
FireWaterReservoir: "fire-water-pool.svg",
|
|
1144
|
+
NaturalWater: "natural-water-source.svg",
|
|
1145
|
+
HospitalResourcePoint: "hospital-resource.svg",
|
|
1146
|
+
PublicSecurityResourcePoint: "police-resource.svg",
|
|
1147
|
+
SupportMaterialPoint: "emergency-supplies.svg",
|
|
1148
|
+
FireStation: "fire-station.svg",
|
|
1149
|
+
LinkageUnit: "coordination-unit.svg"
|
|
1150
|
+
}, Et = Object.freeze(
|
|
1151
|
+
Object.keys($)
|
|
1152
|
+
), et = "/node_modules/cesium-to-three/dist/icon/";
|
|
1153
|
+
function tt(s) {
|
|
1154
|
+
const e = s?.trim();
|
|
1155
|
+
return !e || !Object.prototype.hasOwnProperty.call(
|
|
1156
|
+
$,
|
|
1157
|
+
e
|
|
1158
|
+
) ? null : et + $[e];
|
|
1140
1159
|
}
|
|
1141
|
-
function
|
|
1160
|
+
function rt(s) {
|
|
1161
|
+
return s.imageUrl?.trim() || tt(s.ontologyId);
|
|
1162
|
+
}
|
|
1163
|
+
function ne(s) {
|
|
1164
|
+
return s instanceof R || s instanceof k ? s.group : s.classification.group;
|
|
1165
|
+
}
|
|
1166
|
+
function it(s) {
|
|
1142
1167
|
const e = s.options, t = JSON.stringify(e.points ?? []);
|
|
1143
1168
|
switch (s.category) {
|
|
1144
1169
|
case "circle":
|
|
@@ -1146,7 +1171,7 @@ function Ke(s) {
|
|
|
1146
1171
|
case "sector":
|
|
1147
1172
|
return `sector|${t}|${e.radius}|${e.startAngle}|${e.sectorAngle}`;
|
|
1148
1173
|
case "point":
|
|
1149
|
-
return `point|${t}|${e.pointStyle}|${e.size}`;
|
|
1174
|
+
return `point|${t}|${e.pointStyle}|${e.size}|${e.imageUrl}|${e.ontologyId}|${e.imageWidth}|${e.imageHeight}|${e.rotation}`;
|
|
1150
1175
|
case "arrow":
|
|
1151
1176
|
return `arrow|${t}|${e.arrowType}`;
|
|
1152
1177
|
case "line":
|
|
@@ -1157,27 +1182,27 @@ function Ke(s) {
|
|
|
1157
1182
|
return `${s.category}|${t}`;
|
|
1158
1183
|
}
|
|
1159
1184
|
}
|
|
1160
|
-
function
|
|
1185
|
+
function ae(s, e = "solid") {
|
|
1161
1186
|
return s === "unfilledArrow" ? "open" : s === "filledArrow" ? "solid" : e;
|
|
1162
1187
|
}
|
|
1163
|
-
function
|
|
1188
|
+
function st(s) {
|
|
1164
1189
|
if (s.showArrow === !1) return "none";
|
|
1165
1190
|
const e = s.startArrowStyle !== void 0 && s.startArrowStyle !== null, t = s.endArrowStyle !== void 0 && s.endArrowStyle !== null;
|
|
1166
1191
|
return e && t ? "both" : t ? "right" : e ? "left" : "none";
|
|
1167
1192
|
}
|
|
1168
|
-
function
|
|
1169
|
-
const e =
|
|
1193
|
+
function oe(s) {
|
|
1194
|
+
const e = st(s), t = ae(s.startArrowStyle), r = ae(s.endArrowStyle);
|
|
1170
1195
|
return {
|
|
1171
1196
|
arrowMode: e,
|
|
1172
1197
|
startArrowStyle: t,
|
|
1173
1198
|
endArrowStyle: r
|
|
1174
1199
|
};
|
|
1175
1200
|
}
|
|
1176
|
-
function
|
|
1201
|
+
function nt(s, e) {
|
|
1177
1202
|
const t = s.options;
|
|
1178
1203
|
return `${t.strokeColor}|${t.strokeWidth}|${t.strokeOpacity}|${t.fillColor}|${t.fillOpacity}|${e}|${t.fontColor ?? ""}|${t.fontSize ?? ""}`;
|
|
1179
1204
|
}
|
|
1180
|
-
class
|
|
1205
|
+
class at {
|
|
1181
1206
|
/** 标绘 id → 渲染记录 */
|
|
1182
1207
|
_entries = /* @__PURE__ */ new Map();
|
|
1183
1208
|
/** 由 GroundDecalManager 写入的标绘集合(引用共享) */
|
|
@@ -1221,23 +1246,23 @@ class rt {
|
|
|
1221
1246
|
this._shapes.has(t) || (this._scene.remove(r.group), r.primitive.dispose(), this._entries.delete(t));
|
|
1222
1247
|
let e = 0;
|
|
1223
1248
|
for (const [t, r] of this._shapes) {
|
|
1224
|
-
const i =
|
|
1249
|
+
const i = Ke(e);
|
|
1225
1250
|
e += 1;
|
|
1226
|
-
const
|
|
1227
|
-
if (
|
|
1228
|
-
this._refreshLightweight(
|
|
1251
|
+
const n = this._entries.get(t), a = it(r), o = nt(r, this._opacity);
|
|
1252
|
+
if (n !== void 0 && n.signature === a && (this._supportsStyleHotUpdate(n.primitive) || n.styleSignature === o)) {
|
|
1253
|
+
this._refreshLightweight(n, i), n.styleSignature = o;
|
|
1229
1254
|
continue;
|
|
1230
1255
|
}
|
|
1231
|
-
|
|
1256
|
+
n !== void 0 && (this._scene.remove(n.group), n.primitive.dispose(), this._entries.delete(t));
|
|
1232
1257
|
const d = this._buildPrimitive(r, i);
|
|
1233
1258
|
if (d === null) continue;
|
|
1234
|
-
const l =
|
|
1259
|
+
const l = ne(d);
|
|
1235
1260
|
l.visible = r.options.visible !== !1, this._scene.add(l);
|
|
1236
1261
|
const h = {
|
|
1237
1262
|
plot: r,
|
|
1238
1263
|
primitive: d,
|
|
1239
1264
|
group: l,
|
|
1240
|
-
signature:
|
|
1265
|
+
signature: a,
|
|
1241
1266
|
styleSignature: o
|
|
1242
1267
|
};
|
|
1243
1268
|
this._entries.set(t, h), d instanceof k && this._refreshLightweight(h, i);
|
|
@@ -1265,7 +1290,7 @@ class rt {
|
|
|
1265
1290
|
* 折线(setColor / setWidth)与文字(setText)支持;面类不支持,需重建。
|
|
1266
1291
|
*/
|
|
1267
1292
|
_supportsStyleHotUpdate(e) {
|
|
1268
|
-
return e instanceof
|
|
1293
|
+
return e instanceof R || e instanceof k;
|
|
1269
1294
|
}
|
|
1270
1295
|
/**
|
|
1271
1296
|
* 几何未变时的轻量刷新:
|
|
@@ -1274,18 +1299,18 @@ class rt {
|
|
|
1274
1299
|
* - 文字:setText(内容 + 颜色 + 不透明度)/ setVisible(不重建图元)。
|
|
1275
1300
|
*/
|
|
1276
1301
|
_refreshLightweight(e, t) {
|
|
1277
|
-
if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof
|
|
1302
|
+
if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof R) {
|
|
1278
1303
|
const r = e.plot.options, {
|
|
1279
1304
|
startArrowStyle: i,
|
|
1280
|
-
endArrowStyle:
|
|
1281
|
-
} =
|
|
1305
|
+
endArrowStyle: n
|
|
1306
|
+
} = oe(r);
|
|
1282
1307
|
e.primitive.setColor(
|
|
1283
1308
|
r.strokeColor,
|
|
1284
1309
|
(r.strokeOpacity ?? 100) * this._opacity
|
|
1285
1310
|
);
|
|
1286
|
-
const
|
|
1287
|
-
e.primitive.setWidth(
|
|
1288
|
-
const o = Math.max(
|
|
1311
|
+
const a = typeof r.strokeWidth == "number" && r.strokeWidth > 0 ? r.strokeWidth : 5;
|
|
1312
|
+
e.primitive.setWidth(a), e.primitive.setArrowStyles(i, n);
|
|
1313
|
+
const o = Math.max(a * 4, 1), d = Math.max(a * 3, 0.8);
|
|
1289
1314
|
e.primitive.setArrowSizeMeters(o, d), e.primitive.setVisible(r.visible !== !1);
|
|
1290
1315
|
}
|
|
1291
1316
|
if (e.primitive instanceof k) {
|
|
@@ -1312,7 +1337,7 @@ class rt {
|
|
|
1312
1337
|
offsetEastMeters: r.offsetX,
|
|
1313
1338
|
offsetNorthMeters: r.offsetY,
|
|
1314
1339
|
metersPerPixel: r.scale
|
|
1315
|
-
}), e.primitive.setVisible(r.visible !== !1), e.group =
|
|
1340
|
+
}), e.primitive.setVisible(r.visible !== !1), e.group = ne(e.primitive), e.group.visible = r.visible !== !1;
|
|
1316
1341
|
}
|
|
1317
1342
|
}
|
|
1318
1343
|
// ── 内部:按 category 构建图元 ──
|
|
@@ -1323,18 +1348,36 @@ class rt {
|
|
|
1323
1348
|
* @returns 渲染图元;未知类型 / 退化情况返回 null。
|
|
1324
1349
|
*/
|
|
1325
1350
|
_buildPrimitive(e, t) {
|
|
1326
|
-
const r = e.options, i = r.points ?? [],
|
|
1351
|
+
const r = e.options, i = r.points ?? [], n = this._opacity, a = (r.strokeOpacity ?? 100) * n, o = (r.fillOpacity ?? 100) * n, d = r.visible !== !1;
|
|
1327
1352
|
switch (e.category) {
|
|
1328
1353
|
case "point": {
|
|
1329
1354
|
if (i.length === 0) return null;
|
|
1330
1355
|
const l = r;
|
|
1331
|
-
|
|
1356
|
+
if (l.pointStyle === "image") {
|
|
1357
|
+
const h = rt(l);
|
|
1358
|
+
return h ? new re({
|
|
1359
|
+
position: i[0],
|
|
1360
|
+
shape: "image",
|
|
1361
|
+
imageUrl: h,
|
|
1362
|
+
imageWidth: l.imageWidth,
|
|
1363
|
+
imageHeight: l.imageHeight,
|
|
1364
|
+
rotation: l.rotation ?? 0,
|
|
1365
|
+
strokeColor: l.strokeColor,
|
|
1366
|
+
strokeWidth: l.strokeWidth ?? 0,
|
|
1367
|
+
strokeOpacity: a,
|
|
1368
|
+
fillColor: l.fillColor,
|
|
1369
|
+
fillOpacity: o,
|
|
1370
|
+
visible: d,
|
|
1371
|
+
renderOrder: t
|
|
1372
|
+
}) : (console.warn(`[soonspacejs] Unknown point image ontology id: ${l.ontologyId ?? ""}`), null);
|
|
1373
|
+
}
|
|
1374
|
+
return new re({
|
|
1332
1375
|
position: i[0],
|
|
1333
1376
|
shape: l.pointStyle ?? "circle",
|
|
1334
1377
|
size: l.size ?? 100,
|
|
1335
1378
|
strokeColor: l.strokeColor,
|
|
1336
1379
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1337
|
-
strokeOpacity:
|
|
1380
|
+
strokeOpacity: a,
|
|
1338
1381
|
fillColor: l.fillColor,
|
|
1339
1382
|
fillOpacity: o,
|
|
1340
1383
|
visible: d,
|
|
@@ -1344,12 +1387,12 @@ class rt {
|
|
|
1344
1387
|
case "circle": {
|
|
1345
1388
|
if (i.length === 0) return null;
|
|
1346
1389
|
const l = r;
|
|
1347
|
-
return new
|
|
1390
|
+
return new te({
|
|
1348
1391
|
center: i[0],
|
|
1349
1392
|
radius: l.radius ?? 100,
|
|
1350
1393
|
strokeColor: l.strokeColor,
|
|
1351
1394
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1352
|
-
strokeOpacity:
|
|
1395
|
+
strokeOpacity: a,
|
|
1353
1396
|
fillColor: l.fillColor,
|
|
1354
1397
|
fillOpacity: o,
|
|
1355
1398
|
visible: d,
|
|
@@ -1359,12 +1402,12 @@ class rt {
|
|
|
1359
1402
|
case "sector": {
|
|
1360
1403
|
if (i.length === 0) return null;
|
|
1361
1404
|
const l = r;
|
|
1362
|
-
return new
|
|
1405
|
+
return new te({
|
|
1363
1406
|
center: i[0],
|
|
1364
1407
|
radius: l.radius ?? 100,
|
|
1365
1408
|
strokeColor: l.strokeColor,
|
|
1366
1409
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1367
|
-
strokeOpacity:
|
|
1410
|
+
strokeOpacity: a,
|
|
1368
1411
|
fillColor: l.fillColor,
|
|
1369
1412
|
fillOpacity: o,
|
|
1370
1413
|
visible: d,
|
|
@@ -1375,11 +1418,11 @@ class rt {
|
|
|
1375
1418
|
}
|
|
1376
1419
|
case "polygon":
|
|
1377
1420
|
case "rectangle":
|
|
1378
|
-
return i.length < 3 ? null : new
|
|
1421
|
+
return i.length < 3 ? null : new ee({
|
|
1379
1422
|
points: i,
|
|
1380
1423
|
strokeColor: r.strokeColor,
|
|
1381
1424
|
strokeWidth: r.strokeWidth ?? 0,
|
|
1382
|
-
strokeOpacity:
|
|
1425
|
+
strokeOpacity: a,
|
|
1383
1426
|
fillColor: r.fillColor,
|
|
1384
1427
|
fillOpacity: o,
|
|
1385
1428
|
visible: d,
|
|
@@ -1389,11 +1432,11 @@ class rt {
|
|
|
1389
1432
|
const l = e.generateCoords();
|
|
1390
1433
|
if (l.length < 3) return null;
|
|
1391
1434
|
const h = r;
|
|
1392
|
-
return new
|
|
1435
|
+
return new ee({
|
|
1393
1436
|
points: l,
|
|
1394
1437
|
strokeColor: h.strokeColor,
|
|
1395
1438
|
strokeWidth: h.strokeWidth ?? 0,
|
|
1396
|
-
strokeOpacity:
|
|
1439
|
+
strokeOpacity: a,
|
|
1397
1440
|
fillColor: h.fillColor,
|
|
1398
1441
|
fillOpacity: o,
|
|
1399
1442
|
visible: d,
|
|
@@ -1406,11 +1449,11 @@ class rt {
|
|
|
1406
1449
|
arrowMode: h,
|
|
1407
1450
|
startArrowStyle: c,
|
|
1408
1451
|
endArrowStyle: y
|
|
1409
|
-
} =
|
|
1410
|
-
return new
|
|
1452
|
+
} = oe(l), _ = l.strokeStyle === "dashed", p = _ ? 60 : void 0, g = _ ? 40 : void 0, m = typeof l.strokeWidth == "number" && l.strokeWidth > 0 ? l.strokeWidth : 5, S = Math.max(m * 4, 1), w = Math.max(m * 3, 0.8);
|
|
1453
|
+
return new R({
|
|
1411
1454
|
points: i,
|
|
1412
1455
|
strokeColor: l.strokeColor,
|
|
1413
|
-
strokeOpacity:
|
|
1456
|
+
strokeOpacity: a,
|
|
1414
1457
|
widthMode: "world",
|
|
1415
1458
|
widthMeters: m,
|
|
1416
1459
|
visible: d,
|
|
@@ -1437,7 +1480,7 @@ class rt {
|
|
|
1437
1480
|
fillColor: l.fillColor,
|
|
1438
1481
|
fillOpacity: o,
|
|
1439
1482
|
strokeColor: l.strokeColor,
|
|
1440
|
-
strokeOpacity:
|
|
1483
|
+
strokeOpacity: a,
|
|
1441
1484
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1442
1485
|
textAlign: l.textAlign,
|
|
1443
1486
|
verticalAlign: l.verticalAlign,
|
|
@@ -1463,7 +1506,7 @@ class rt {
|
|
|
1463
1506
|
}
|
|
1464
1507
|
}
|
|
1465
1508
|
}
|
|
1466
|
-
class
|
|
1509
|
+
class ot {
|
|
1467
1510
|
/** 标绘 id → 实例;与桥接器的 shapes 共用同一引用 */
|
|
1468
1511
|
_items = /* @__PURE__ */ new Map();
|
|
1469
1512
|
/** 标绘管理器 id(对外常量,保持与参考项目一致) */
|
|
@@ -1477,7 +1520,7 @@ class it {
|
|
|
1477
1520
|
/** 合并同一帧内多次 _markDirty,值为 requestAnimationFrame 句柄 */
|
|
1478
1521
|
_redrawTimer = null;
|
|
1479
1522
|
constructor(e) {
|
|
1480
|
-
this.ssp = e.ssp, this._bridge = new
|
|
1523
|
+
this.ssp = e.ssp, this._bridge = new at({ scene: e.ssp.viewport.scene });
|
|
1481
1524
|
}
|
|
1482
1525
|
/** 暴露内部桥接器,业务若需自定义场景接入可选择性使用 */
|
|
1483
1526
|
get bridge() {
|
|
@@ -1515,17 +1558,17 @@ class it {
|
|
|
1515
1558
|
}
|
|
1516
1559
|
case "line": {
|
|
1517
1560
|
const { type: r, ...i } = e;
|
|
1518
|
-
t = new
|
|
1561
|
+
t = new We(i);
|
|
1519
1562
|
break;
|
|
1520
1563
|
}
|
|
1521
1564
|
case "polygon": {
|
|
1522
1565
|
const { type: r, ...i } = e;
|
|
1523
|
-
t = new
|
|
1566
|
+
t = new $e(i);
|
|
1524
1567
|
break;
|
|
1525
1568
|
}
|
|
1526
1569
|
case "rectangle": {
|
|
1527
1570
|
const { type: r, ...i } = e;
|
|
1528
|
-
t = new
|
|
1571
|
+
t = new ze(i);
|
|
1529
1572
|
break;
|
|
1530
1573
|
}
|
|
1531
1574
|
case "circle": {
|
|
@@ -1535,7 +1578,7 @@ class it {
|
|
|
1535
1578
|
}
|
|
1536
1579
|
case "sector": {
|
|
1537
1580
|
const { type: r, ...i } = e;
|
|
1538
|
-
t = new
|
|
1581
|
+
t = new He(i);
|
|
1539
1582
|
break;
|
|
1540
1583
|
}
|
|
1541
1584
|
case "text": {
|
|
@@ -1615,8 +1658,8 @@ class it {
|
|
|
1615
1658
|
insertCoord(e, t, r) {
|
|
1616
1659
|
const i = this._items.get(e);
|
|
1617
1660
|
if (!i || !i.options.points) return;
|
|
1618
|
-
const
|
|
1619
|
-
i.options.points.splice(
|
|
1661
|
+
const n = Math.max(0, Math.min(t, i.options.points.length));
|
|
1662
|
+
i.options.points.splice(n, 0, [...r]), this._markDirty();
|
|
1620
1663
|
}
|
|
1621
1664
|
/**
|
|
1622
1665
|
* 删除指定下标顶点。多边形至少保留 3 点,其余至少 2 点;越界 / 触底静默返回。
|
|
@@ -1633,8 +1676,8 @@ class it {
|
|
|
1633
1676
|
translateCoords(e, t, r) {
|
|
1634
1677
|
const i = this._items.get(e);
|
|
1635
1678
|
if (!(!i || !i.options.points)) {
|
|
1636
|
-
for (const
|
|
1637
|
-
|
|
1679
|
+
for (const n of i.options.points)
|
|
1680
|
+
n[0] += t, n[1] += r;
|
|
1638
1681
|
this._markDirty();
|
|
1639
1682
|
}
|
|
1640
1683
|
}
|
|
@@ -1664,12 +1707,12 @@ class it {
|
|
|
1664
1707
|
findNearestCoord(e, t, r) {
|
|
1665
1708
|
const i = this._items.get(e);
|
|
1666
1709
|
if (!i || !i.options.points || i.options.points.length === 0) return -1;
|
|
1667
|
-
let
|
|
1710
|
+
let n = 0, a = 1 / 0;
|
|
1668
1711
|
for (let o = 0; o < i.options.points.length; o++) {
|
|
1669
1712
|
const d = i.options.points[o][0] - t, l = i.options.points[o][1] - r, h = d * d + l * l;
|
|
1670
|
-
h <
|
|
1713
|
+
h < a && (a = h, n = o);
|
|
1671
1714
|
}
|
|
1672
|
-
return
|
|
1715
|
+
return n;
|
|
1673
1716
|
}
|
|
1674
1717
|
// ── 渲染接入 ──
|
|
1675
1718
|
/**
|
|
@@ -1702,20 +1745,20 @@ class it {
|
|
|
1702
1745
|
}));
|
|
1703
1746
|
}
|
|
1704
1747
|
}
|
|
1705
|
-
const
|
|
1706
|
-
class
|
|
1748
|
+
const lt = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/", dt = "https://c.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png";
|
|
1749
|
+
class kt {
|
|
1707
1750
|
constructor(e, t = {}) {
|
|
1708
1751
|
this.ssp = e, this.options = t;
|
|
1709
|
-
const r = t.baseUrl ||
|
|
1710
|
-
if (this.resourceManager = new
|
|
1711
|
-
const i = t.imageryUrl ||
|
|
1752
|
+
const r = t.baseUrl || lt;
|
|
1753
|
+
if (this.resourceManager = new Ge(), this.terrainManager = new Fe(), t.imageryUrl !== !1) {
|
|
1754
|
+
const i = t.imageryUrl || dt;
|
|
1712
1755
|
this.resourceManager.addOverlay({
|
|
1713
1756
|
id: this.defaultImageryId,
|
|
1714
1757
|
type: u.XYZ,
|
|
1715
1758
|
options: { id: this.defaultImageryId, url: i, type: u.XYZ }
|
|
1716
1759
|
});
|
|
1717
1760
|
}
|
|
1718
|
-
this.groundDecalManager = new
|
|
1761
|
+
this.groundDecalManager = new ot({ ssp: this.ssp }), ke(), this._alphaClipMode = t.alphaClipMode ?? "alphaTest", this._currentTerrainConfig = {
|
|
1719
1762
|
id: this.defaultTerrainId,
|
|
1720
1763
|
type: M.QUANTIZED_MESH,
|
|
1721
1764
|
url: r
|
|
@@ -1736,9 +1779,9 @@ class Ct {
|
|
|
1736
1779
|
* 供 cesium-to-three 标绘图元的 RTE 着色器使用。标绘几何烘焙在绝对 ECEF,只有用
|
|
1737
1780
|
* ECEF 相机投影才能与「重定向后地形」对齐,同时保持 reorientation 开启(地形不抖)。
|
|
1738
1781
|
*/
|
|
1739
|
-
_plotVirtualCamera = new
|
|
1782
|
+
_plotVirtualCamera = new V();
|
|
1740
1783
|
_reorientInverse = new b();
|
|
1741
|
-
_virtualScale = new
|
|
1784
|
+
_virtualScale = new Oe();
|
|
1742
1785
|
/** 资源管理器(存储配置) */
|
|
1743
1786
|
resourceManager;
|
|
1744
1787
|
/** 地形管理器(记录地形列表) */
|
|
@@ -1815,27 +1858,27 @@ class Ct {
|
|
|
1815
1858
|
* @param config 地形配置
|
|
1816
1859
|
*/
|
|
1817
1860
|
_initPlugins(e, t) {
|
|
1818
|
-
if (this.tilesFadePlugin = new
|
|
1819
|
-
new
|
|
1861
|
+
if (this.tilesFadePlugin = new B({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new H(), e.registerPlugin(this.tilesFadePlugin), e.registerPlugin(this.updateOnChangePlugin), t.type === M.CESIUM_ION ? e.registerPlugin(
|
|
1862
|
+
new ge({
|
|
1820
1863
|
apiToken: t.apiToken,
|
|
1821
1864
|
assetId: t.assetId || "1",
|
|
1822
1865
|
autoRefreshToken: t.autoRefreshToken ?? !0,
|
|
1823
1866
|
assetTypeHandler: (r, i) => {
|
|
1824
1867
|
r === "TERRAIN" && i.getPluginByName("QUANTIZED_MESH_PLUGIN") === null && i.registerPlugin(
|
|
1825
|
-
new
|
|
1868
|
+
new J({ useRecommendedSettings: !0 })
|
|
1826
1869
|
);
|
|
1827
1870
|
}
|
|
1828
1871
|
})
|
|
1829
1872
|
) : (e.registerPlugin(
|
|
1830
|
-
new
|
|
1873
|
+
new J({ useRecommendedSettings: !0 })
|
|
1831
1874
|
), e.fetchData = async (r) => {
|
|
1832
1875
|
const i = { method: "GET", mode: "cors" };
|
|
1833
1876
|
if (/layer\.json$/.test(r)) {
|
|
1834
|
-
const
|
|
1835
|
-
return
|
|
1877
|
+
const n = await fetch(r, i).then((a) => a.json());
|
|
1878
|
+
return n.metadataAvailability = -1, new Response(JSON.stringify(n));
|
|
1836
1879
|
}
|
|
1837
1880
|
return fetch(r, i);
|
|
1838
|
-
}), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new
|
|
1881
|
+
}), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new De(), this.customMaterialPlugin.alphaClipMode = this._alphaClipMode, e.registerPlugin(this.customMaterialPlugin)), this.imageOverlayPlugin = new ce({
|
|
1839
1882
|
renderer: this.ssp.viewport.renderer,
|
|
1840
1883
|
overlays: []
|
|
1841
1884
|
}), e.registerPlugin(this.imageOverlayPlugin), this._ensureGlobeDepth(), this.overlayManager = new N(
|
|
@@ -2069,14 +2112,14 @@ class Ct {
|
|
|
2069
2112
|
};
|
|
2070
2113
|
beforeRenderHandler = () => {
|
|
2071
2114
|
const { camera: e, renderer: t, scene: r } = this.ssp.viewport;
|
|
2072
|
-
if (e.updateMatrixWorld(), this.tiles.setCamera(e), this.tiles.setResolutionFromRenderer(e, t), this.tiles.update(), this.groundDecalManager && e instanceof
|
|
2073
|
-
const i = this._ensureGlobeDepth(),
|
|
2074
|
-
(i.target.width !==
|
|
2115
|
+
if (e.updateMatrixWorld(), this.tiles.setCamera(e), this.tiles.setResolutionFromRenderer(e, t), this.tiles.update(), this.groundDecalManager && e instanceof V) {
|
|
2116
|
+
const i = this._ensureGlobeDepth(), n = t.domElement.width, a = t.domElement.height;
|
|
2117
|
+
(i.target.width !== n || i.target.height !== a) && i.resize(n, a), xe(e.near, e.far), i.render(t, e, r, this.tiles.group);
|
|
2075
2118
|
const o = this._buildPlotVirtualCamera(e);
|
|
2076
2119
|
this.groundDecalManager.update({
|
|
2077
2120
|
depthTexture: i.target.texture,
|
|
2078
|
-
width:
|
|
2079
|
-
height:
|
|
2121
|
+
width: n,
|
|
2122
|
+
height: a,
|
|
2080
2123
|
camera: o,
|
|
2081
2124
|
pixelRatio: t.getPixelRatio()
|
|
2082
2125
|
});
|
|
@@ -2108,7 +2151,7 @@ class Ct {
|
|
|
2108
2151
|
_ensureGlobeDepth() {
|
|
2109
2152
|
if (!this._globeDepth) {
|
|
2110
2153
|
const { renderer: e } = this.ssp.viewport;
|
|
2111
|
-
this._globeDepth = new
|
|
2154
|
+
this._globeDepth = new Re(
|
|
2112
2155
|
e.domElement.width,
|
|
2113
2156
|
e.domElement.height
|
|
2114
2157
|
);
|
|
@@ -2133,13 +2176,13 @@ class Ct {
|
|
|
2133
2176
|
lat: t,
|
|
2134
2177
|
height: r
|
|
2135
2178
|
};
|
|
2136
|
-
const
|
|
2179
|
+
const n = () => {
|
|
2137
2180
|
const o = f.degToRad(t), d = f.degToRad(e);
|
|
2138
|
-
i.transformLatLonHeightToOrigin(o, d, r), this.render(),
|
|
2139
|
-
},
|
|
2140
|
-
this.tiles.removeEventListener("load-root-tileset",
|
|
2181
|
+
i.transformLatLonHeightToOrigin(o, d, r), this.render(), a();
|
|
2182
|
+
}, a = () => {
|
|
2183
|
+
this.tiles.removeEventListener("load-root-tileset", n), this.loedTilesSets.delete(n);
|
|
2141
2184
|
};
|
|
2142
|
-
return this.tiles.addEventListener("load-root-tileset",
|
|
2185
|
+
return this.tiles.addEventListener("load-root-tileset", n), this.loedTilesSets.add(n), this.tiles.root && n(), a;
|
|
2143
2186
|
}
|
|
2144
2187
|
dispose() {
|
|
2145
2188
|
this.disable(), this.terrainManager.dispose(), this.overlayManager.dispose(), this.groundDecalManager?.dispose(), this._globeDepth?.dispose(), this._globeDepth = void 0, this.loedTilesSets.forEach(
|
|
@@ -2152,7 +2195,7 @@ const C = {
|
|
|
2152
2195
|
GRADIENT: 1,
|
|
2153
2196
|
TOPOGRAPHIC_LINES: 2,
|
|
2154
2197
|
LIGHTING: 3
|
|
2155
|
-
},
|
|
2198
|
+
}, ht = {
|
|
2156
2199
|
vertexShader: (
|
|
2157
2200
|
/* glsl */
|
|
2158
2201
|
`
|
|
@@ -2178,7 +2221,7 @@ const C = {
|
|
|
2178
2221
|
}
|
|
2179
2222
|
`
|
|
2180
2223
|
)
|
|
2181
|
-
},
|
|
2224
|
+
}, ut = {
|
|
2182
2225
|
vertexShader: (
|
|
2183
2226
|
/* glsl */
|
|
2184
2227
|
`
|
|
@@ -2225,7 +2268,7 @@ const C = {
|
|
|
2225
2268
|
)
|
|
2226
2269
|
};
|
|
2227
2270
|
let D = null, G = null, F = null;
|
|
2228
|
-
class
|
|
2271
|
+
class ct {
|
|
2229
2272
|
constructor(e, t) {
|
|
2230
2273
|
this.ssp = e, this.options = t, "url" in this.options ? this.tiles = new T(this.options.url) : (this.tiles = new T(), this._initCesiumIon(this.options)), this._initBasePlugins(this.options);
|
|
2231
2274
|
}
|
|
@@ -2235,8 +2278,8 @@ class lt {
|
|
|
2235
2278
|
reorientationPlugin;
|
|
2236
2279
|
options;
|
|
2237
2280
|
// 用于模型居中
|
|
2238
|
-
_box = new
|
|
2239
|
-
_sphere = new
|
|
2281
|
+
_box = new Me();
|
|
2282
|
+
_sphere = new ue();
|
|
2240
2283
|
// 当前材质类型
|
|
2241
2284
|
_materialType = C.DEFAULT;
|
|
2242
2285
|
// 按需渲染标志
|
|
@@ -2248,7 +2291,7 @@ class lt {
|
|
|
2248
2291
|
*/
|
|
2249
2292
|
_initCesiumIon(e) {
|
|
2250
2293
|
this.tiles.registerPlugin(
|
|
2251
|
-
new
|
|
2294
|
+
new ge({
|
|
2252
2295
|
apiToken: e.apiToken,
|
|
2253
2296
|
assetId: e.assetId,
|
|
2254
2297
|
autoRefreshToken: e.autoRefreshToken ?? !0
|
|
@@ -2259,7 +2302,7 @@ class lt {
|
|
|
2259
2302
|
* 初始化基础插件
|
|
2260
2303
|
*/
|
|
2261
2304
|
_initBasePlugins(e) {
|
|
2262
|
-
if (e._managedByPlugin || (D === null ? D = this.tiles.lruCache : this.tiles.lruCache = D, G === null ? G = this.tiles.parseQueue : this.tiles.parseQueue = G, F === null ? F = this.tiles.downloadQueue : this.tiles.downloadQueue = F, this.tiles.lruCache.maxSize = 600, this.tiles.lruCache.minSize = 300, this.tiles.lruCache.unloadPercent = 0.8), this._setupGLTFLoader(), this.tilesFadePlugin = new
|
|
2305
|
+
if (e._managedByPlugin || (D === null ? D = this.tiles.lruCache : this.tiles.lruCache = D, G === null ? G = this.tiles.parseQueue : this.tiles.parseQueue = G, F === null ? F = this.tiles.downloadQueue : this.tiles.downloadQueue = F, this.tiles.lruCache.maxSize = 600, this.tiles.lruCache.minSize = 300, this.tiles.lruCache.unloadPercent = 0.8), this._setupGLTFLoader(), this.tilesFadePlugin = new B({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new H(), this.tiles.registerPlugin(this.tilesFadePlugin), this.tiles.registerPlugin(this.updateOnChangePlugin), this.tiles.maxDepth = e.maxDepth ?? 20, this.tiles.errorTarget = e.errorTarget ?? 2, this.options.reorientation) {
|
|
2263
2306
|
const t = this.options.reorientation || { lon: 120, lat: 30 };
|
|
2264
2307
|
this.reorientationPlugin = new j({
|
|
2265
2308
|
lon: t.lon,
|
|
@@ -2277,10 +2320,10 @@ class lt {
|
|
|
2277
2320
|
* 设置 GLTF Loader
|
|
2278
2321
|
*/
|
|
2279
2322
|
_setupGLTFLoader() {
|
|
2280
|
-
const e = new
|
|
2323
|
+
const e = new de(this.tiles.manager), t = this.ssp.manager?.store?.modelManager;
|
|
2281
2324
|
if (t?.gltfLoader) {
|
|
2282
|
-
const { dracoLoader: r, ktx2Loader: i, meshoptDecoder:
|
|
2283
|
-
r && e.setDRACOLoader(r), i && e.setKTX2Loader(i),
|
|
2325
|
+
const { dracoLoader: r, ktx2Loader: i, meshoptDecoder: n } = t.gltfLoader;
|
|
2326
|
+
r && e.setDRACOLoader(r), i && e.setKTX2Loader(i), n && e.setMeshoptDecoder(n);
|
|
2284
2327
|
}
|
|
2285
2328
|
this.tiles.manager.addHandler(/\.gltf$/, e);
|
|
2286
2329
|
}
|
|
@@ -2335,15 +2378,15 @@ class lt {
|
|
|
2335
2378
|
r.material = r.originalMaterial, r.material && (r.material.side = 2), r.receiveShadow = !1, r.castShadow = !1;
|
|
2336
2379
|
break;
|
|
2337
2380
|
case C.GRADIENT:
|
|
2338
|
-
r.material = new
|
|
2381
|
+
r.material = new Z(ht), r.material.side = 2, r.receiveShadow = !1, r.castShadow = !1;
|
|
2339
2382
|
break;
|
|
2340
2383
|
case C.TOPOGRAPHIC_LINES: {
|
|
2341
|
-
const i = new
|
|
2384
|
+
const i = new Z(ut);
|
|
2342
2385
|
i.extensions = { derivatives: !0 }, i.side = 2, r.material = i, r.receiveShadow = !1, r.castShadow = !1;
|
|
2343
2386
|
break;
|
|
2344
2387
|
}
|
|
2345
2388
|
case C.LIGHTING:
|
|
2346
|
-
r.material = new
|
|
2389
|
+
r.material = new Se(), r.material.side = 2, r.receiveShadow = !0, r.castShadow = !0;
|
|
2347
2390
|
break;
|
|
2348
2391
|
}
|
|
2349
2392
|
});
|
|
@@ -2389,13 +2432,13 @@ class lt {
|
|
|
2389
2432
|
lat: t,
|
|
2390
2433
|
height: r
|
|
2391
2434
|
};
|
|
2392
|
-
const
|
|
2435
|
+
const n = () => {
|
|
2393
2436
|
const o = f.degToRad(t), d = f.degToRad(e);
|
|
2394
|
-
i.transformLatLonHeightToOrigin(o, d, r), this.render(),
|
|
2395
|
-
},
|
|
2396
|
-
this.tiles.removeEventListener("load-root-tileset",
|
|
2437
|
+
i.transformLatLonHeightToOrigin(o, d, r), this.render(), a();
|
|
2438
|
+
}, a = () => {
|
|
2439
|
+
this.tiles.removeEventListener("load-root-tileset", n), this.loedTilesSets.delete(n);
|
|
2397
2440
|
};
|
|
2398
|
-
return this.tiles.addEventListener("load-root-tileset",
|
|
2441
|
+
return this.tiles.addEventListener("load-root-tileset", n), this.loedTilesSets.add(n), this.tiles.root && n(), a;
|
|
2399
2442
|
}
|
|
2400
2443
|
dispose() {
|
|
2401
2444
|
this.disable(), this.loedTilesSets.forEach(
|
|
@@ -2403,8 +2446,8 @@ class lt {
|
|
|
2403
2446
|
), this.loedTilesSets.clear(), this.tiles.removeEventListener("load-model", this.onLoadModel), this.tiles.removeEventListener("dispose-model", this.onDisposeModel), this.options._managedByPlugin || (this.tiles.removeEventListener("load-model", this._onNeedsRender), this.tiles.removeEventListener("needs-render", this._onNeedsRender), this.tiles.removeEventListener("needs-update", this._onNeedsRender)), this.tiles.dispose();
|
|
2404
2447
|
}
|
|
2405
2448
|
}
|
|
2406
|
-
const
|
|
2407
|
-
class
|
|
2449
|
+
const U = 2;
|
|
2450
|
+
class xt {
|
|
2408
2451
|
constructor(e) {
|
|
2409
2452
|
this.ssp = e;
|
|
2410
2453
|
const { controls: t, viewport: r } = e;
|
|
@@ -2430,7 +2473,7 @@ class bt {
|
|
|
2430
2473
|
_sourceFrame = new b();
|
|
2431
2474
|
_placementMatrix = new b();
|
|
2432
2475
|
_upCorrectionMatrix = new b();
|
|
2433
|
-
_boundingSphere = new
|
|
2476
|
+
_boundingSphere = new ue();
|
|
2434
2477
|
_beforeRenderHandler = () => {
|
|
2435
2478
|
this.needsUpdate && (this.needsUpdate = !1, this.ssp.viewport.camera.updateMatrixWorld(), this.tilesMap.forEach((e) => {
|
|
2436
2479
|
e.tiles.setCamera(this.ssp.viewport.camera), e.tiles.setResolutionFromRenderer(this.ssp.viewport.camera, this.ssp.viewport.renderer), e.applyAutoCenter(), e.tiles.group.updateMatrixWorld(), e.tiles.update();
|
|
@@ -2454,8 +2497,8 @@ class bt {
|
|
|
2454
2497
|
lat: e.lat,
|
|
2455
2498
|
height: e.height ?? 0.1
|
|
2456
2499
|
}, this.tilesMap.forEach((i) => {
|
|
2457
|
-
const
|
|
2458
|
-
this.applyReferencePlacement(i,
|
|
2500
|
+
const n = this._referencePlacements.get(i) ?? null;
|
|
2501
|
+
this.applyReferencePlacement(i, n);
|
|
2459
2502
|
});
|
|
2460
2503
|
}
|
|
2461
2504
|
clearReferenceOrigin() {
|
|
@@ -2470,21 +2513,21 @@ class bt {
|
|
|
2470
2513
|
async loadTiles(e) {
|
|
2471
2514
|
const t = "url" in e ? e.url : e.assetId;
|
|
2472
2515
|
if (this.tilesMap.has(t))
|
|
2473
|
-
return
|
|
2474
|
-
const { ssp: r } = this, i = this._getReferencePlacement(e),
|
|
2475
|
-
...
|
|
2516
|
+
return I.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
|
|
2517
|
+
const { ssp: r } = this, i = this._getReferencePlacement(e), n = this._getTilesRendererOptions(e, i), a = new ct(r, {
|
|
2518
|
+
...n,
|
|
2476
2519
|
_managedByPlugin: !0
|
|
2477
2520
|
});
|
|
2478
|
-
i && (this._referencePlacements.set(
|
|
2479
|
-
const { tiles: o } =
|
|
2480
|
-
this._lruCache === null ? this._lruCache = o.lruCache : o.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = o.parseQueue : o.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = o.downloadQueue : o.downloadQueue = this._downloadQueue, o.lruCache.maxSize = 600, o.lruCache.minSize = 300, o.lruCache.unloadPercent = 0.8, this.tilesMap.set(t,
|
|
2521
|
+
i && (this._referencePlacements.set(a, i), a.options.reorientation = i);
|
|
2522
|
+
const { tiles: o } = a;
|
|
2523
|
+
this._lruCache === null ? this._lruCache = o.lruCache : o.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = o.parseQueue : o.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = o.downloadQueue : o.downloadQueue = this._downloadQueue, o.lruCache.maxSize = 600, o.lruCache.minSize = 300, o.lruCache.unloadPercent = 0.8, this.tilesMap.set(t, a), o.setCamera(this._tilesCamera), o.setResolutionFromRenderer(this._tilesCamera, r.viewport.renderer), r.addObject(o.group), this._referenceOrigin && this.applyReferencePlacement(a, i);
|
|
2481
2524
|
const d = () => {
|
|
2482
2525
|
this.cameraTransitionStart || (this.needsUpdate = !0, r.render());
|
|
2483
2526
|
};
|
|
2484
2527
|
return o.addEventListener("load-model", d), new Promise((l) => {
|
|
2485
2528
|
o.addEventListener("load-tile-set", () => {
|
|
2486
|
-
const h = this._referencePlacements.get(
|
|
2487
|
-
this._referenceOrigin && this.applyReferencePlacement(
|
|
2529
|
+
const h = this._referencePlacements.get(a);
|
|
2530
|
+
this._referenceOrigin && this.applyReferencePlacement(a, h ?? null), d(), l(a);
|
|
2488
2531
|
});
|
|
2489
2532
|
});
|
|
2490
2533
|
}
|
|
@@ -2518,29 +2561,29 @@ class bt {
|
|
|
2518
2561
|
}), this.tilesMap.clear();
|
|
2519
2562
|
}
|
|
2520
2563
|
invalidate(e, t, r, i) {
|
|
2521
|
-
(i ? [i] : Array.from(this.tilesMap.values())).forEach((
|
|
2522
|
-
const o = this._referencePlacements.get(
|
|
2523
|
-
this._referenceOrigin ? this.applyReferencePlacement(
|
|
2564
|
+
(i ? [i] : Array.from(this.tilesMap.values())).forEach((a) => {
|
|
2565
|
+
const o = this._referencePlacements.get(a) ?? null;
|
|
2566
|
+
this._referenceOrigin ? this.applyReferencePlacement(a, {
|
|
2524
2567
|
...o ?? {},
|
|
2525
2568
|
lon: e,
|
|
2526
2569
|
lat: t,
|
|
2527
2570
|
height: r
|
|
2528
|
-
}) :
|
|
2571
|
+
}) : a.invalidate(e, t, r);
|
|
2529
2572
|
});
|
|
2530
2573
|
}
|
|
2531
2574
|
applyReferencePlacement(e, t) {
|
|
2532
2575
|
if (!this._referenceOrigin)
|
|
2533
|
-
return
|
|
2534
|
-
const { ellipsoid: r, group: i } = e.tiles,
|
|
2576
|
+
return I.utils.warn("TilesRendererManager: reference origin is not set."), !1;
|
|
2577
|
+
const { ellipsoid: r, group: i } = e.tiles, n = this._referenceOrigin, a = this._isGeoreferenced(e);
|
|
2535
2578
|
if (r.getObjectFrame(
|
|
2536
|
-
f.degToRad(
|
|
2537
|
-
f.degToRad(
|
|
2538
|
-
|
|
2579
|
+
f.degToRad(n.lat),
|
|
2580
|
+
f.degToRad(n.lon),
|
|
2581
|
+
n.height ?? 0.1,
|
|
2539
2582
|
0,
|
|
2540
2583
|
0,
|
|
2541
2584
|
0,
|
|
2542
2585
|
this._referenceFrame,
|
|
2543
|
-
|
|
2586
|
+
U
|
|
2544
2587
|
), this._placementMatrix.copy(this._referenceFrame).invert(), t)
|
|
2545
2588
|
r.getObjectFrame(
|
|
2546
2589
|
f.degToRad(t.lat),
|
|
@@ -2550,9 +2593,9 @@ class bt {
|
|
|
2550
2593
|
0,
|
|
2551
2594
|
0,
|
|
2552
2595
|
this._targetFrame,
|
|
2553
|
-
|
|
2554
|
-
), this._placementMatrix.multiply(this._targetFrame),
|
|
2555
|
-
else if (!
|
|
2596
|
+
U
|
|
2597
|
+
), this._placementMatrix.multiply(this._targetFrame), a ? (this._sourceFrame.copy(this._getSourceFrame(e)).invert(), this._placementMatrix.multiply(this._sourceFrame)) : (this._getUpCorrectionMatrix(t.up ?? "+z"), this._placementMatrix.multiply(this._upCorrectionMatrix));
|
|
2598
|
+
else if (!a)
|
|
2556
2599
|
return !1;
|
|
2557
2600
|
return i.matrix.copy(this._placementMatrix), i.matrix.decompose(i.position, i.quaternion, i.scale), i.updateMatrixWorld(!0), t && (this._referencePlacements.set(e, t), e.options.reorientation = t), this.needsUpdate = !0, e.render(), !0;
|
|
2558
2601
|
}
|
|
@@ -2576,7 +2619,7 @@ class bt {
|
|
|
2576
2619
|
0,
|
|
2577
2620
|
0,
|
|
2578
2621
|
this._sourceFrame,
|
|
2579
|
-
|
|
2622
|
+
U
|
|
2580
2623
|
), this._sourceFrame;
|
|
2581
2624
|
}
|
|
2582
2625
|
_getReferencePlacement(e) {
|
|
@@ -2622,101 +2665,101 @@ class bt {
|
|
|
2622
2665
|
this.clear(), this.ssp.signals.beforeRender.remove(this._beforeRenderHandler), this.ssp.signals.cameraObjectChange.remove(this._onCameraObjectChange), this._lruCache = null, this._parseQueue = null, this._downloadQueue = null;
|
|
2623
2666
|
}
|
|
2624
2667
|
}
|
|
2625
|
-
function
|
|
2668
|
+
function Rt(s) {
|
|
2626
2669
|
if (s == null) return [0, 0, 0, 0];
|
|
2627
2670
|
const e = String(s).trim().toLowerCase();
|
|
2628
2671
|
if (e === "" || e === "transparent") return [0, 0, 0, 0];
|
|
2629
2672
|
const t = /^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]*\.?[0-9]+)\s*\)$/.exec(e);
|
|
2630
2673
|
if (t !== null) {
|
|
2631
|
-
const i = Number(t[1]) / 255,
|
|
2632
|
-
return [v(i), v(
|
|
2674
|
+
const i = Number(t[1]) / 255, n = Number(t[2]) / 255, a = Number(t[3]) / 255, o = Number(t[4]);
|
|
2675
|
+
return [v(i), v(n), v(a), v(o)];
|
|
2633
2676
|
}
|
|
2634
2677
|
const r = /^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$/.exec(e);
|
|
2635
2678
|
if (r !== null) {
|
|
2636
|
-
const i = Number(r[1]) / 255,
|
|
2637
|
-
return [v(i), v(
|
|
2679
|
+
const i = Number(r[1]) / 255, n = Number(r[2]) / 255, a = Number(r[3]) / 255;
|
|
2680
|
+
return [v(i), v(n), v(a), 1];
|
|
2638
2681
|
}
|
|
2639
2682
|
if (e.startsWith("#")) {
|
|
2640
2683
|
const i = e.slice(1);
|
|
2641
2684
|
if (i.length === 3) {
|
|
2642
|
-
const
|
|
2643
|
-
if (Number.isFinite(
|
|
2644
|
-
return [
|
|
2685
|
+
const n = parseInt(i[0] + i[0], 16) / 255, a = parseInt(i[1] + i[1], 16) / 255, o = parseInt(i[2] + i[2], 16) / 255;
|
|
2686
|
+
if (Number.isFinite(n) && Number.isFinite(a) && Number.isFinite(o))
|
|
2687
|
+
return [n, a, o, 1];
|
|
2645
2688
|
} else if (i.length === 6) {
|
|
2646
|
-
const
|
|
2647
|
-
if (Number.isFinite(
|
|
2648
|
-
return [
|
|
2689
|
+
const n = parseInt(i.slice(0, 2), 16) / 255, a = parseInt(i.slice(2, 4), 16) / 255, o = parseInt(i.slice(4, 6), 16) / 255;
|
|
2690
|
+
if (Number.isFinite(n) && Number.isFinite(a) && Number.isFinite(o))
|
|
2691
|
+
return [n, a, o, 1];
|
|
2649
2692
|
} else if (i.length === 8) {
|
|
2650
|
-
const
|
|
2651
|
-
if (Number.isFinite(
|
|
2652
|
-
return [
|
|
2693
|
+
const n = parseInt(i.slice(0, 2), 16) / 255, a = parseInt(i.slice(2, 4), 16) / 255, o = parseInt(i.slice(4, 6), 16) / 255, d = parseInt(i.slice(6, 8), 16) / 255;
|
|
2694
|
+
if (Number.isFinite(n) && Number.isFinite(a) && Number.isFinite(o) && Number.isFinite(d))
|
|
2695
|
+
return [n, a, o, d];
|
|
2653
2696
|
}
|
|
2654
2697
|
}
|
|
2655
2698
|
return [1, 1, 1, 1];
|
|
2656
2699
|
}
|
|
2657
|
-
function
|
|
2700
|
+
function It(s, e) {
|
|
2658
2701
|
typeof s.fillOpacity == "number" && Number.isFinite(s.fillOpacity) ? e[0] = v(s.fillOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[0] = v(s.opacity) : e[0] = 1, typeof s.strokeOpacity == "number" && Number.isFinite(s.strokeOpacity) ? e[1] = v(s.strokeOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[1] = v(s.opacity) : e[1] = 1;
|
|
2659
2702
|
}
|
|
2660
2703
|
function v(s) {
|
|
2661
2704
|
return !Number.isFinite(s) || s < 0 ? 0 : s > 1 ? 1 : s;
|
|
2662
2705
|
}
|
|
2663
|
-
const
|
|
2706
|
+
const le = 100, Q = 1e-4;
|
|
2664
2707
|
function P(s, e) {
|
|
2665
2708
|
const t = s[0] - e[0], r = s[1] - e[1];
|
|
2666
2709
|
return Math.sqrt(t * t + r * r);
|
|
2667
2710
|
}
|
|
2668
|
-
function
|
|
2711
|
+
function pt(s) {
|
|
2669
2712
|
let e = 0;
|
|
2670
2713
|
for (let t = 0; t < s.length - 1; t++)
|
|
2671
2714
|
e += P(s[t], s[t + 1]);
|
|
2672
2715
|
return e;
|
|
2673
2716
|
}
|
|
2674
|
-
function
|
|
2675
|
-
return Math.pow(
|
|
2717
|
+
function Nt(s) {
|
|
2718
|
+
return Math.pow(pt(s), 0.99);
|
|
2676
2719
|
}
|
|
2677
|
-
function
|
|
2720
|
+
function _e(s, e) {
|
|
2678
2721
|
return [(s[0] + e[0]) / 2, (s[1] + e[1]) / 2];
|
|
2679
2722
|
}
|
|
2680
|
-
function
|
|
2723
|
+
function z(s, e) {
|
|
2681
2724
|
let t;
|
|
2682
2725
|
const r = Math.asin(
|
|
2683
2726
|
Math.abs(e[1] - s[1]) / P(s, e)
|
|
2684
2727
|
);
|
|
2685
2728
|
return e[1] >= s[1] && e[0] >= s[0] ? t = r + Math.PI : e[1] >= s[1] && e[0] < s[0] ? t = Math.PI * 2 - r : e[1] < s[1] && e[0] < s[0] ? t = r : t = Math.PI - r, t;
|
|
2686
2729
|
}
|
|
2687
|
-
function
|
|
2688
|
-
const r =
|
|
2730
|
+
function At(s, e, t) {
|
|
2731
|
+
const r = z(e, s) - z(e, t);
|
|
2689
2732
|
return r < 0 ? r + Math.PI * 2 : r;
|
|
2690
2733
|
}
|
|
2691
|
-
function
|
|
2734
|
+
function gt(s, e, t) {
|
|
2692
2735
|
return (t[1] - s[1]) * (e[0] - s[0]) > (e[1] - s[1]) * (t[0] - s[0]);
|
|
2693
2736
|
}
|
|
2694
|
-
function
|
|
2695
|
-
const
|
|
2737
|
+
function Lt(s, e, t, r, i) {
|
|
2738
|
+
const n = z(s, e), a = i ? n + t : n - t, o = r * Math.cos(a), d = r * Math.sin(a);
|
|
2696
2739
|
return [e[0] + o, e[1] + d];
|
|
2697
2740
|
}
|
|
2698
|
-
function
|
|
2741
|
+
function Y(s, e, t) {
|
|
2699
2742
|
let r = s[0] - e[0], i = s[1] - e[1];
|
|
2700
|
-
const
|
|
2701
|
-
r /=
|
|
2702
|
-
let
|
|
2703
|
-
const d = Math.sqrt(
|
|
2704
|
-
return
|
|
2743
|
+
const n = Math.sqrt(r * r + i * i);
|
|
2744
|
+
r /= n, i /= n;
|
|
2745
|
+
let a = t[0] - e[0], o = t[1] - e[1];
|
|
2746
|
+
const d = Math.sqrt(a * a + o * o);
|
|
2747
|
+
return a /= d, o /= d, [r + a, i + o];
|
|
2705
2748
|
}
|
|
2706
2749
|
function X(s, e, t, r) {
|
|
2707
|
-
const i =
|
|
2708
|
-
let
|
|
2750
|
+
const i = Y(e, t, r);
|
|
2751
|
+
let n, a, o, d, l;
|
|
2709
2752
|
const h = Math.sqrt(i[0] * i[0] + i[1] * i[1]), c = i[0] / h, y = i[1] / h, _ = P(e, t), p = P(t, r);
|
|
2710
|
-
return h > Q ?
|
|
2753
|
+
return h > Q ? gt(e, t, r) ? (o = s * _, d = t[0] - o * y, l = t[1] + o * c, n = [d, l], o = s * p, d = t[0] + o * y, l = t[1] - o * c, a = [d, l]) : (o = s * _, d = t[0] + o * y, l = t[1] - o * c, n = [d, l], o = s * p, d = t[0] - o * y, l = t[1] + o * c, a = [d, l]) : (d = t[0] + s * (e[0] - t[0]), l = t[1] + s * (e[1] - t[1]), n = [d, l], d = t[0] + s * (r[0] - t[0]), l = t[1] + s * (r[1] - t[1]), a = [d, l]), [n, a];
|
|
2711
2754
|
}
|
|
2712
|
-
function
|
|
2713
|
-
const e = s[0], t = s[1], r = s[2],
|
|
2755
|
+
function ft(s) {
|
|
2756
|
+
const e = s[0], t = s[1], r = s[2], n = X(0, e, t, r)[0], a = Y(e, t, r), o = Math.sqrt(a[0] * a[0] + a[1] * a[1]);
|
|
2714
2757
|
let d;
|
|
2715
2758
|
if (o > Q) {
|
|
2716
|
-
const l =
|
|
2759
|
+
const l = _e(e, t), h = e[0] - l[0], c = e[1] - l[1], _ = 2 / P(e, t), p = -_ * c, g = _ * h, m = p * p - g * g, S = 2 * p * g, w = g * g - p * p, x = n[0] - l[0], E = n[1] - l[1];
|
|
2717
2760
|
d = [
|
|
2718
|
-
l[0] + m *
|
|
2719
|
-
l[1] + S *
|
|
2761
|
+
l[0] + m * x + S * E,
|
|
2762
|
+
l[1] + S * x + w * E
|
|
2720
2763
|
];
|
|
2721
2764
|
} else
|
|
2722
2765
|
d = [
|
|
@@ -2728,14 +2771,14 @@ function ut(s) {
|
|
|
2728
2771
|
function A(s) {
|
|
2729
2772
|
return 0.3 * s;
|
|
2730
2773
|
}
|
|
2731
|
-
function
|
|
2732
|
-
const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1],
|
|
2774
|
+
function yt(s) {
|
|
2775
|
+
const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1], a = X(0, t, r, i)[1], o = Y(t, r, i), d = Math.sqrt(o[0] * o[0] + o[1] * o[1]);
|
|
2733
2776
|
let l;
|
|
2734
2777
|
if (d > Q) {
|
|
2735
|
-
const h =
|
|
2778
|
+
const h = _e(r, i), c = i[0] - h[0], y = i[1] - h[1], p = 2 / P(r, i), g = -p * y, m = p * c, S = g * g - m * m, w = 2 * g * m, x = m * m - g * g, E = a[0] - h[0], q = a[1] - h[1];
|
|
2736
2779
|
l = [
|
|
2737
|
-
h[0] + S *
|
|
2738
|
-
h[1] + w *
|
|
2780
|
+
h[0] + S * E + w * q,
|
|
2781
|
+
h[1] + w * E + x * q
|
|
2739
2782
|
];
|
|
2740
2783
|
} else
|
|
2741
2784
|
l = [
|
|
@@ -2744,102 +2787,106 @@ function ct(s) {
|
|
|
2744
2787
|
];
|
|
2745
2788
|
return l;
|
|
2746
2789
|
}
|
|
2747
|
-
function
|
|
2748
|
-
const r = [
|
|
2749
|
-
for (let
|
|
2750
|
-
const o = e[
|
|
2790
|
+
function Dt(s, e) {
|
|
2791
|
+
const r = [ft(e)];
|
|
2792
|
+
for (let a = 0; a < e.length - 2; a++) {
|
|
2793
|
+
const o = e[a], d = e[a + 1], l = e[a + 2], h = X(s, o, d, l);
|
|
2751
2794
|
r.push(h[0], h[1]);
|
|
2752
2795
|
}
|
|
2753
|
-
const i =
|
|
2796
|
+
const i = yt(e);
|
|
2754
2797
|
r.push(i);
|
|
2755
|
-
const
|
|
2756
|
-
for (let
|
|
2757
|
-
const o = e[
|
|
2758
|
-
|
|
2759
|
-
for (let l = 0; l <
|
|
2760
|
-
const h = l /
|
|
2761
|
-
|
|
2798
|
+
const n = [];
|
|
2799
|
+
for (let a = 0; a < e.length - 1; a++) {
|
|
2800
|
+
const o = e[a], d = e[a + 1];
|
|
2801
|
+
n.push(o);
|
|
2802
|
+
for (let l = 0; l < le; l++) {
|
|
2803
|
+
const h = l / le, c = Math.pow(1 - h, 3) * o[0] + 3 * h * Math.pow(1 - h, 2) * r[a * 2][0] + 3 * h * h * (1 - h) * r[a * 2 + 1][0] + Math.pow(h, 3) * d[0], y = Math.pow(1 - h, 3) * o[1] + 3 * h * Math.pow(1 - h, 2) * r[a * 2][1] + 3 * h * h * (1 - h) * r[a * 2 + 1][1] + Math.pow(h, 3) * d[1];
|
|
2804
|
+
n.push([c, y]);
|
|
2762
2805
|
}
|
|
2763
|
-
|
|
2806
|
+
n.push(d);
|
|
2764
2807
|
}
|
|
2765
|
-
return
|
|
2808
|
+
return n;
|
|
2766
2809
|
}
|
|
2767
|
-
function
|
|
2810
|
+
function Gt(s) {
|
|
2768
2811
|
if (s.length <= 2) return s;
|
|
2769
2812
|
const e = 2, t = [], r = s.length - e - 1;
|
|
2770
2813
|
t.push(s[0]);
|
|
2771
2814
|
for (let i = 0; i <= r; i++)
|
|
2772
|
-
for (let
|
|
2773
|
-
let
|
|
2815
|
+
for (let n = 0; n <= 1; n += 0.05) {
|
|
2816
|
+
let a = 0, o = 0;
|
|
2774
2817
|
for (let d = 0; d <= e; d++) {
|
|
2775
|
-
const l =
|
|
2776
|
-
|
|
2818
|
+
const l = mt(d, n);
|
|
2819
|
+
a += l * s[i + d][0], o += l * s[i + d][1];
|
|
2777
2820
|
}
|
|
2778
|
-
t.push([
|
|
2821
|
+
t.push([a, o]);
|
|
2779
2822
|
}
|
|
2780
2823
|
return t.push(s[s.length - 1]), t;
|
|
2781
2824
|
}
|
|
2782
|
-
function
|
|
2825
|
+
function mt(s, e) {
|
|
2783
2826
|
return s === 0 ? Math.pow(e - 1, 2) / 2 : s === 1 ? (-2 * Math.pow(e, 2) + 2 * e + 1) / 2 : s === 2 ? Math.pow(e, 2) / 2 : 0;
|
|
2784
2827
|
}
|
|
2785
|
-
function
|
|
2828
|
+
function Ft(s, e) {
|
|
2786
2829
|
return W(s, e);
|
|
2787
2830
|
}
|
|
2788
|
-
function
|
|
2789
|
-
return
|
|
2831
|
+
function Ut(s, e) {
|
|
2832
|
+
return ve(s, e);
|
|
2790
2833
|
}
|
|
2791
|
-
function
|
|
2792
|
-
return !s || s.length < 3 ? [] :
|
|
2834
|
+
function Jt(s) {
|
|
2835
|
+
return !s || s.length < 3 ? [] : me(s);
|
|
2793
2836
|
}
|
|
2794
|
-
function
|
|
2795
|
-
return !s || s.length < 3 ? [] :
|
|
2837
|
+
function Wt(s) {
|
|
2838
|
+
return !s || s.length < 3 ? [] : ye(s);
|
|
2796
2839
|
}
|
|
2797
|
-
function
|
|
2798
|
-
return !s || s.length < 2 ? [] :
|
|
2840
|
+
function $t(s) {
|
|
2841
|
+
return !s || s.length < 2 ? [] : fe(s);
|
|
2799
2842
|
}
|
|
2800
2843
|
export {
|
|
2801
|
-
|
|
2802
|
-
|
|
2844
|
+
Pt as ArcgisTilesRenderer,
|
|
2845
|
+
$ as EMERGENCY_RESOURCE_ICON_BY_ONTOLOGY_ID,
|
|
2846
|
+
Et as EMERGENCY_RESOURCE_ONTOLOGY_IDS,
|
|
2847
|
+
le as FITTING_COUNT,
|
|
2803
2848
|
je as GisPlotArrow,
|
|
2804
2849
|
O as GisPlotBase,
|
|
2805
2850
|
Xe as GisPlotCircle,
|
|
2806
|
-
|
|
2851
|
+
We as GisPlotLine,
|
|
2807
2852
|
Je as GisPlotPoint,
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2853
|
+
$e as GisPlotPolygon,
|
|
2854
|
+
ze as GisPlotRectangle,
|
|
2855
|
+
He as GisPlotSector,
|
|
2811
2856
|
Qe as GisPlotText,
|
|
2812
|
-
|
|
2857
|
+
ot as GroundDecalManager,
|
|
2813
2858
|
C as MaterialType,
|
|
2814
2859
|
P as MathDistance,
|
|
2815
|
-
|
|
2860
|
+
_e as Mid,
|
|
2816
2861
|
N as OverlayManager,
|
|
2817
2862
|
u as OverlayType,
|
|
2818
|
-
|
|
2819
|
-
|
|
2863
|
+
at as PlotPrimitiveBridge,
|
|
2864
|
+
kt as TerrainTilesRenderer,
|
|
2820
2865
|
M as TerrainType,
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2866
|
+
De as TileCustomMaterialPlugin,
|
|
2867
|
+
ct as TilesRenderer,
|
|
2868
|
+
xt as TilesRendererManager,
|
|
2824
2869
|
Q as ZERO_TOLERANCE,
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2870
|
+
Ut as createAssaultDirectionArrow,
|
|
2871
|
+
Jt as createAttackArrow,
|
|
2872
|
+
$t as createCurvedArrow,
|
|
2873
|
+
Ft as createFineArrow,
|
|
2874
|
+
Wt as createSwallowtailAttackArrow,
|
|
2875
|
+
bt as default,
|
|
2876
|
+
At as getAngleOfThreePoints,
|
|
2877
|
+
z as getAzimuth,
|
|
2878
|
+
Nt as getBaseLength,
|
|
2834
2879
|
X as getBisectorNormals,
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2880
|
+
Dt as getCurvePoints,
|
|
2881
|
+
Y as getNormal,
|
|
2882
|
+
Gt as getQBSplinePoints,
|
|
2883
|
+
Lt as getThirdPoint,
|
|
2884
|
+
gt as isClockWise,
|
|
2885
|
+
Rt as parseColorToRGBA,
|
|
2886
|
+
Ke as plotOrderToRenderOrder,
|
|
2887
|
+
tt as resolveEmergencyResourceIcon,
|
|
2888
|
+
It as resolveOpacity,
|
|
2889
|
+
rt as resolvePlotPointImageUrl,
|
|
2890
|
+
Ze as sanitizePlotOrder,
|
|
2891
|
+
pt as wholeDistance
|
|
2845
2892
|
};
|