@soonspacejs/plugin-tiles 2.16.8 → 2.16.9

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 CHANGED
@@ -1,11 +1,14 @@
1
- import D, { BaseMesh as De } from "soonspacejs";
2
- import { TilesRenderer as E } from "um-3d-tiles-renderer";
3
- import { GLTFLoader as be } from "three/examples/jsm/loaders/GLTFLoader.js";
4
- import { MathUtils as p, MeshBasicMaterial as xe, Color as W, Box3 as te, Sphere as G, Vector3 as a, Matrix4 as g, Quaternion as Ce, TextureLoader as Ge, Raycaster as Be, PerspectiveCamera as ce, MeshStandardMaterial as Ue, ShaderMaterial as he } from "three";
5
- import { TilesFadePlugin as re, UpdateOnChangePlugin as ie, QuantizedMeshPlugin as Q, ImageOverlayPlugin as Te, XYZTilesOverlay as ke, ReorientationPlugin as se, StyledGeoJSONOverlay as de, CesiumIonOverlay as We, TMSTilesOverlay as ze, UrlTemplateTilesOverlay as Je, WMSTilesOverlay as $e, WMTSCapabilitiesLoader as je, WMTSTilesOverlay as He, CesiumIonAuthPlugin as Pe } from "um-3d-tiles-renderer/plugins";
6
- import { CesiumGroundTextPrimitive as N, CesiumGroundPolylinePrimitive as L, CesiumGroundPointPrimitive as F, CesiumGroundPolygonPrimitive as ue, CesiumGroundCirclePrimitive as ge, initializeApproximateTerrainHeights as Qe, updateTerrainLogDepthUniforms as Ye, CesiumGlobeDepth as Xe, CESIUM_GROUND_NON_PICKABLE_LAYER as Ve } from "cesium-to-three/ground";
7
- import { createFineArrow as Y, createCurvedArrow as Ee, createSwallowtailAttackArrow as Ie, createAttackArrow as Re, createAssaultDirectionArrow as Ne } from "cesium-to-three/arrow";
8
- class qe {
1
+ import w, { BaseMesh as Xe } from "soonspacejs";
2
+ import { TilesRenderer as D } from "um-3d-tiles-renderer";
3
+ import { GLTFLoader as ae } from "three/examples/jsm/loaders/GLTFLoader.js";
4
+ import { CesiumIonOverlay as qe, TilesFadePlugin as le, UpdateOnChangePlugin as ce, QuantizedMeshPlugin as K, ImageOverlayPlugin as Ne, XYZTilesOverlay as Fe, ReorientationPlugin as he, StyledGeoJSONOverlay as ye, TMSTilesOverlay as Ze, UrlTemplateTilesOverlay as Ke, WMSTilesOverlay as et, WMTSCapabilitiesLoader as tt, WMTSTilesOverlay as rt, CesiumIonAuthPlugin as De } from "um-3d-tiles-renderer/plugins";
5
+ import { QuadKeyImageSource as it } from "um-3d-tiles-renderer/src/three/plugins/images/sources/QuadKeyImageSource.js";
6
+ import { TMSImageSource as st } from "um-3d-tiles-renderer/src/three/plugins/images/sources/TMSImageSource.js";
7
+ import { XYZImageSource as nt } from "um-3d-tiles-renderer/src/three/plugins/images/sources/XYZImageSource.js";
8
+ import { MathUtils as v, MeshBasicMaterial as Ue, Color as Y, Box3 as de, Sphere as $, Vector3 as l, Matrix4 as f, Quaternion as Ge, TextureLoader as ot, Raycaster as at, PerspectiveCamera as we, MeshStandardMaterial as lt, ShaderMaterial as ve } from "three";
9
+ import { CesiumGroundTextPrimitive as B, CesiumGroundPolylinePrimitive as J, CesiumGroundPointPrimitive as z, CesiumGroundPolygonPrimitive as _e, CesiumGroundCirclePrimitive as Me, initializeApproximateTerrainHeights as ct, updateTerrainLogDepthUniforms as ht, CesiumGlobeDepth as dt, CESIUM_GROUND_NON_PICKABLE_LAYER as ut } from "cesium-to-three/ground";
10
+ import { createFineArrow as ee, createCurvedArrow as Be, createSwallowtailAttackArrow as We, createAttackArrow as ze, createAssaultDirectionArrow as Je } from "cesium-to-three/arrow";
11
+ class gt {
9
12
  constructor(e) {
10
13
  this.parser = e, this.name = "KHR_texture_basisu_patch";
11
14
  }
@@ -13,13 +16,198 @@ class qe {
13
16
  const t = this.parser, r = t.json, n = r.textures[e].source, o = r.images[n];
14
17
  if (!o || o.mimeType !== "image/ktx2")
15
18
  return null;
16
- const l = t.options.ktx2Loader;
17
- if (!l)
18
- throw new Error(`${D.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
19
- return t.loadTextureImage(e, n, l);
19
+ const a = t.options.ktx2Loader;
20
+ if (!a)
21
+ throw new Error(`${w.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
22
+ return t.loadTextureImage(e, n, a);
23
+ }
24
+ }
25
+ const Oe = /* @__PURE__ */ new WeakSet();
26
+ function W(s) {
27
+ const e = s, t = e.manager, r = t.getHandler.bind(t);
28
+ let i;
29
+ t.getHandler = (a) => {
30
+ const h = r(a);
31
+ return h || !/^path\.(?:gltf|glb)$/.test(a) ? h : i ||= w.utils.configureGLTFLoader(new ae(t));
32
+ }, e.fetchData = (a, h) => w.utils.fetchResource(a, h);
33
+ const n = e.registerPlugin;
34
+ e.registerPlugin = function(a) {
35
+ return (a.name === "CESIUM_ION_AUTH_PLUGIN" || a.name === "GOOGLE_CLOUD_AUTH_PLUGIN") && je(a.auth), n.call(this, a);
36
+ };
37
+ const o = e.parseTile;
38
+ return e.parseTile = async function(a, h, c, d, g) {
39
+ const p = await He(a, d, { ...this.fetchOptions, signal: g }, this.manager, (m, _) => this.invokeOnePlugin((y) => y.fetchData?.(m, _)));
40
+ return this.manager.getHandler("path.gltf")?.setRequestHeader(this.fetchOptions.headers || {}), o.call(this, p, h, c, d, g);
41
+ }, s;
42
+ }
43
+ async function $e(s, e) {
44
+ const t = await w.utils.fetchResource(s, e);
45
+ if (/layer\.json(?:[?#]|$)/.test(s) && t.ok) {
46
+ const r = await t.json();
47
+ return r.metadataAvailability = -1, new Response(JSON.stringify(r), { status: t.status, statusText: t.statusText, headers: t.headers });
20
48
  }
49
+ return t;
21
50
  }
22
- class pr {
51
+ function x(s) {
52
+ const e = s;
53
+ if (Oe.has(e)) return s;
54
+ if (Oe.add(e), e.auth && je(e.auth), !e.auth)
55
+ e.fetch = function(t, r) {
56
+ return w.utils.fetchResource(this.preprocessURL ? this.preprocessURL(t) : t, r);
57
+ };
58
+ else {
59
+ const t = e.fetch;
60
+ e.fetch = function(r, i) {
61
+ return this.externalType ? w.utils.fetchResource(this.preprocessURL ? this.preprocessURL(r) : r, i) : t.call(this, r, i);
62
+ };
63
+ }
64
+ return e.imageSource && (e.imageSource.fetchData = (...t) => e.fetch(...t)), s;
65
+ }
66
+ function je(s) {
67
+ "_bearerToken" in s ? (s.refreshToken = function(e) {
68
+ if (this._tokenRefreshPromise === null) {
69
+ const t = new URL(this.authURL);
70
+ t.searchParams.set("access_token", this.apiToken), this._tokenRefreshPromise = w.utils.fetchResource(t, e).then((r) => {
71
+ if (!r.ok) throw new Error(`CesiumIonAuthPlugin: Failed to load data with error code ${r.status}`);
72
+ return r.json();
73
+ }).then((r) => (this._bearerToken = `Bearer ${r.accessToken}`, this._tokenRefreshPromise = null, r));
74
+ }
75
+ return this._tokenRefreshPromise;
76
+ }, s.fetch = async function(e, t) {
77
+ await this._tokenRefreshPromise;
78
+ const r = () => {
79
+ const n = new Headers(t?.headers);
80
+ return n.set("Authorization", this._bearerToken), w.utils.fetchResource(e, { ...t, headers: n });
81
+ }, i = await r();
82
+ return i.status >= 400 && i.status <= 499 && this.autoRefreshToken ? (await this.refreshToken(t), r()) : i;
83
+ }) : (s.fetch = async function(e, t) {
84
+ this.sessionToken === null && this.isMapTilesSession && this.refreshToken(t), await this._tokenRefreshPromise;
85
+ const r = new URL(e);
86
+ r.searchParams.set("key", this.apiToken), this.sessionToken && r.searchParams.set("session", this.sessionToken);
87
+ let i = await w.utils.fetchResource(r, t);
88
+ if (i.status >= 400 && i.status <= 499 && this.autoRefreshToken && (await this.refreshToken(t), this.sessionToken && r.searchParams.set("session", this.sessionToken), i = await w.utils.fetchResource(r, t)), this.sessionToken === null && !this.isMapTilesSession) {
89
+ const n = await i.json();
90
+ return this.sessionToken = Se(n), n;
91
+ }
92
+ return i;
93
+ }, s.refreshToken = function(e) {
94
+ if (this._tokenRefreshPromise === null) {
95
+ const t = new URL(this.authURL), r = { ...e };
96
+ if (t.searchParams.set("key", this.apiToken), this.isMapTilesSession) {
97
+ r.method = "POST", r.body = JSON.stringify(this.sessionOptions);
98
+ const i = new Headers(r.headers);
99
+ i.set("Content-Type", "application/json"), r.headers = i;
100
+ }
101
+ this._tokenRefreshPromise = w.utils.fetchResource(t, r).then((i) => {
102
+ if (!i.ok) throw new Error(`GoogleCloudAuth: Failed to load data with error code ${i.status}`);
103
+ return i.json();
104
+ }).then((i) => (this.sessionToken = Se(i), this._tokenRefreshPromise = null, i));
105
+ }
106
+ return this._tokenRefreshPromise;
107
+ });
108
+ }
109
+ function Se(s) {
110
+ if ("session" in s) return s.session;
111
+ const e = [s.root];
112
+ let t = null;
113
+ for (; e.length; ) {
114
+ const r = e.pop();
115
+ if (r.content?.uri) {
116
+ const [, n] = r.content.uri.split("?");
117
+ t = new URLSearchParams(n).get("session");
118
+ continue;
119
+ }
120
+ const i = r.children || [];
121
+ for (let n = i.length - 1; n >= 0; n--) e.push(i[n]);
122
+ }
123
+ return t;
124
+ }
125
+ class pt extends qe {
126
+ constructor(e) {
127
+ super(e), x(this);
128
+ const t = this;
129
+ t._initImageSource = async function() {
130
+ const r = await this.auth.refreshToken();
131
+ if (this._attributions = r.attributions.map((i) => ({ value: i.html, type: "html", collapsible: i.collapsible })), r.type !== "IMAGERY") throw new Error("CesiumIonOverlay: Only IMAGERY is supported as overlay type.");
132
+ if (this.externalType = !!r.externalType, r.externalType === "GOOGLE_2D_MAPS") {
133
+ const { url: i, session: n, key: o, tileWidth: a } = r.options;
134
+ this.imageSource = new nt({ ...this.options, url: `${i}/v1/2dtiles/{z}/{x}/{y}?session=${n}&key=${o}`, tileDimension: a, levels: 22 });
135
+ } else if (r.externalType === "BING") {
136
+ const { url: i, mapStyle: n, key: o } = r.options, a = `${i}/REST/v1/Imagery/Metadata/${n}?incl=ImageryProviders&key=${o}&uriScheme=https`, c = (await w.utils.fetchResource(a).then((d) => d.json())).resourceSets[0].resources[0];
137
+ this.imageSource = new it({ ...this.options, url: c.imageUrl, subdomains: c.imageUrlSubdomains, tileDimension: c.tileWidth, levels: c.zoomMax });
138
+ } else
139
+ this.imageSource = new st({ ...this.options, url: r.url });
140
+ return this.imageSource.fetchData = (...i) => this.fetch(...i), this.imageSource.init();
141
+ };
142
+ }
143
+ }
144
+ async function He(s, e, t, r, i = w.utils.fetchResource, n = 0) {
145
+ if (s.byteLength < 4) return s;
146
+ const o = new TextDecoder().decode(new Uint8Array(s, 0, 4)), a = new DataView(s);
147
+ if (o === "cmpt") {
148
+ if (n >= 32 || s.byteLength < 16) throw new Error("Invalid 3D Tiles: composite nesting or header length.");
149
+ if (a.getUint32(8, !0) !== s.byteLength) throw new Error("Invalid 3D Tiles: composite byte length.");
150
+ const b = a.getUint32(12, !0);
151
+ if (b > Math.floor((s.byteLength - 16) / 12)) throw new Error("Invalid 3D Tiles: composite child count.");
152
+ const S = [];
153
+ let M = 16, C = !1;
154
+ for (let I = 0; I < b; I++) {
155
+ if (M + 12 > s.byteLength) throw new Error("Invalid 3D Tiles: composite child header.");
156
+ const N = a.getUint32(M + 8, !0);
157
+ if (N < 12 || N > s.byteLength - M) throw new Error("Invalid 3D Tiles: composite child length.");
158
+ const fe = s.slice(M, M + N), me = await He(fe, e, t, r, i, n + 1);
159
+ C ||= me !== fe, S.push(me), M += N;
160
+ }
161
+ if (!C) return s;
162
+ const G = new Uint8Array(s, M), A = new Uint8Array(16 + S.reduce((I, N) => I + N.byteLength, 0) + G.byteLength);
163
+ A.set(new Uint8Array(s, 0, 16)), new DataView(A.buffer).setUint32(8, A.byteLength, !0), M = 16;
164
+ for (const I of S)
165
+ A.set(new Uint8Array(I), M), M += I.byteLength;
166
+ return A.set(G, M), A.buffer;
167
+ }
168
+ if (o !== "i3dm") return s;
169
+ if (s.byteLength < 32) throw new Error("Invalid 3D Tiles: I3DM header length.");
170
+ if (a.getUint32(8, !0) !== s.byteLength) throw new Error("Invalid 3D Tiles: I3DM byte length.");
171
+ if (a.getUint32(28, !0) !== 0) return s;
172
+ const h = 32 + [12, 16, 20, 24].reduce((b, S) => b + a.getUint32(S, !0), 0);
173
+ if (h >= s.byteLength) throw new Error("Invalid 3D Tiles: I3DM table offsets.");
174
+ const c = new TextDecoder().decode(new Uint8Array(s, h)).replace(/\0.*$/, "").trim();
175
+ if (!c) throw new Error("Invalid 3D Tiles: empty I3DM external URI.");
176
+ const d = new URL(c, e).href, g = r.resolveURL(d), p = await i(g, t);
177
+ if (!p.ok) throw new Error(`I3DMLoaderBase : Failed to load file "${g}" with status ${p.status} : ${p.statusText}`);
178
+ const m = /^(?:data|blob):/i.test(g) ? d : g, _ = ft(await p.arrayBuffer(), m, h), y = new Uint8Array(h + _.byteLength);
179
+ y.set(new Uint8Array(s, 0, h)), y.set(new Uint8Array(_), h);
180
+ const O = new DataView(y.buffer);
181
+ return O.setUint32(8, y.byteLength, !0), O.setUint32(28, 1, !0), y.buffer;
182
+ }
183
+ function ft(s, e, t) {
184
+ const r = new DataView(s), i = s.byteLength >= 4 && r.getUint32(0, !0) === 1179937895;
185
+ if (i && (s.byteLength < 20 || r.getUint32(4, !0) !== 2 || r.getUint32(8, !0) !== s.byteLength)) throw new Error("Invalid GLTF: binary header.");
186
+ const n = i ? r.getUint32(12, !0) : s.byteLength;
187
+ if (i) {
188
+ if (n % 4 || n > s.byteLength - 20 || r.getUint32(16, !0) !== 1313821514) throw new Error("Invalid GLTF: JSON chunk length or type.");
189
+ let p = 20 + n;
190
+ for (; p < s.byteLength; ) {
191
+ if (p + 8 > s.byteLength) throw new Error("Invalid GLTF: trailing chunk header.");
192
+ const m = r.getUint32(p, !0);
193
+ if (m % 4 || m > s.byteLength - p - 8) throw new Error("Invalid GLTF: trailing chunk length.");
194
+ p += 8 + m;
195
+ }
196
+ }
197
+ const o = JSON.parse(new TextDecoder().decode(new Uint8Array(s, i ? 20 : 0, n))), a = (p, m) => {
198
+ typeof p?.[m] == "string" && !/^(?:data|blob):/i.test(p[m]) && (p[m] = new URL(p[m], e).href);
199
+ };
200
+ o.buffers?.forEach((p) => a(p, "uri")), o.images?.forEach((p) => a(p, "uri")), a(o.extensions?.EXT_structural_metadata, "schemaUri");
201
+ const h = new TextEncoder().encode(JSON.stringify(o));
202
+ if (!i) {
203
+ const p = new Uint8Array(Math.ceil((t + h.byteLength) / 8) * 8 - t);
204
+ return p.fill(32), p.set(h), p.buffer;
205
+ }
206
+ if (t % 4) throw new Error("Invalid 3D Tiles: I3DM binary GLTF alignment.");
207
+ const c = new Uint8Array(s, 20 + n), d = Math.ceil((t + 20 + h.byteLength + c.byteLength) / 8) * 8 - t - 20 - c.byteLength, g = new Uint8Array(20 + d + c.byteLength);
208
+ return g.set(new Uint8Array(s, 0, 20)), g.fill(32, 20, 20 + d), g.set(h, 20), g.set(c, 20 + d), new DataView(g.buffer).setUint32(8, g.byteLength, !0), new DataView(g.buffer).setUint32(12, d, !0), g.buffer;
209
+ }
210
+ class Ar {
23
211
  constructor(e) {
24
212
  this.ssp = e;
25
213
  const { controls: t, viewport: r } = e;
@@ -46,15 +234,15 @@ class pr {
46
234
  downloadQueue = null;
47
235
  async loadTiles(e) {
48
236
  if (this.tilesMap.has(e)) {
49
- D.utils.warn(`${e} already loaded`);
237
+ w.utils.warn(`${e} already loaded`);
50
238
  return;
51
239
  }
52
- const { ssp: t, ssp: { viewport: r } } = this, i = new E(e);
240
+ const { ssp: t, ssp: { viewport: r } } = this, i = W(new D(e));
53
241
  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 n = new be(i.manager);
55
- n.register((d) => new qe(d));
56
- const { dracoLoader: o, ktx2Loader: l, meshoptDecoder: h } = t.manager.store.modelManager.gltfLoader;
57
- o && n.setDRACOLoader(o), l && n.setKTX2Loader(l), h && n.setMeshoptDecoder(h), 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);
242
+ const n = w.utils.configureGLTFLoader(new ae(i.manager));
243
+ n.register((d) => new gt(d));
244
+ const { dracoLoader: o, ktx2Loader: a, meshoptDecoder: h } = t.manager.store.modelManager.gltfLoader;
245
+ o && n.setDRACOLoader(o), a && n.setKTX2Loader(a), h && n.setMeshoptDecoder(h), 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
246
  const c = () => {
59
247
  this.cameraTransitionStart || (this.needsUpdate = !0, t.render());
60
248
  };
@@ -69,31 +257,25 @@ class pr {
69
257
  return t ? (t.dispose(), this.tilesMap.delete(e), this.ssp.removeObject(t.group), !0) : !1;
70
258
  }
71
259
  }
72
- let Ze = class {
260
+ let mt = class {
73
261
  priority = -999;
74
262
  processTileModel(e) {
75
263
  e.traverse((t) => {
76
- t.material && (t.material = new xe());
264
+ t.material && (t.material = new Ue());
77
265
  });
78
266
  }
79
267
  };
80
- const Ke = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/";
81
- class yr {
268
+ const yt = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/";
269
+ class Fr {
82
270
  constructor(e) {
83
- this.ssp = e, this.tiles = new E(Ke), this.tiles.fetchData = async (t, r) => {
84
- if (/layer\.json$/.test(t)) {
85
- const i = await fetch(t, r).then((n) => n.json());
86
- return i.metadataAvailability = -1, new Response(JSON.stringify(i));
87
- }
88
- return fetch(t, r);
89
- }, this.tilesFadePlugin = new re({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new ie(), this.quantizedPlugin = new Q({}), this.customMaterialPlugin = new Ze(), this.imageOverlayPlugin = new Te({
271
+ this.ssp = e, this.tiles = W(new D(yt)), this.tiles.fetchData = $e, this.tilesFadePlugin = new le({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new ce(), this.quantizedPlugin = new K({}), this.customMaterialPlugin = new mt(), this.imageOverlayPlugin = new Ne({
90
272
  renderer: e.viewport.renderer,
91
273
  overlays: [
92
- new ke({
274
+ x(new Fe({
93
275
  url: "https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
94
- })
276
+ }))
95
277
  ]
96
- }), this.reorientationPlugin = new se({
278
+ }), this.reorientationPlugin = new he({
97
279
  lon: 120,
98
280
  lat: 30,
99
281
  height: 0.1
@@ -124,10 +306,10 @@ class yr {
124
306
  }
125
307
  invalidate(e, t, r) {
126
308
  const i = () => {
127
- const o = p.degToRad(t), l = p.degToRad(e);
309
+ const o = v.degToRad(t), a = v.degToRad(e);
128
310
  this.reorientationPlugin.transformLatLonHeightToOrigin(
129
311
  o,
130
- l,
312
+ a,
131
313
  r
132
314
  ), this.ssp.render(), n();
133
315
  }, n = () => {
@@ -141,7 +323,7 @@ class yr {
141
323
  ), this.loedTilesSets.clear(), this.tiles.removeEventListener("needs-render", this.render), this.tiles.removeEventListener("needs-update", this.render), this.tiles.dispose();
142
324
  }
143
325
  }
144
- class et {
326
+ class wt {
145
327
  // 使用较低的 priority 确保在 ImageOverlayPlugin 之后执行
146
328
  // ImageOverlayPlugin 默认 priority 是 -1
147
329
  priority = -999;
@@ -152,7 +334,7 @@ class et {
152
334
  */
153
335
  processTileModel(e) {
154
336
  e.traverse((t) => {
155
- t.material && (t.material = new xe());
337
+ t.material && (t.material = new Ue());
156
338
  });
157
339
  }
158
340
  /**
@@ -184,8 +366,8 @@ class et {
184
366
  e.needsUpdate = !0;
185
367
  }
186
368
  }
187
- var u = /* @__PURE__ */ ((s) => (s.GEOJSON = "geojson", s.CESIUM_ION = "cesiumIon", s.TMS = "tms", s.XYZ = "xyz", s.WMS = "wms", s.WMTS = "wmts", s.URL_TEMPLATE = "urlTemplate", s.PLOT = "plot", s))(u || {}), C = /* @__PURE__ */ ((s) => (s.QUANTIZED_MESH = "quantizedMesh", s.CESIUM_ION = "cesiumIon", s))(C || {});
188
- class B {
369
+ var u = /* @__PURE__ */ ((s) => (s.GEOJSON = "geojson", s.CESIUM_ION = "cesiumIon", s.TMS = "tms", s.XYZ = "xyz", s.WMS = "wms", s.WMTS = "wmts", s.URL_TEMPLATE = "urlTemplate", s.PLOT = "plot", s))(u || {}), L = /* @__PURE__ */ ((s) => (s.QUANTIZED_MESH = "quantizedMesh", s.CESIUM_ION = "cesiumIon", s))(L || {});
370
+ class j {
189
371
  constructor(e, t) {
190
372
  this.imageOverlayPlugin = e, this.resourceManager = t;
191
373
  }
@@ -209,9 +391,9 @@ class B {
209
391
  defaultStyle: this._buildGeoJSONDefaultStyle(e, r),
210
392
  ...this._getGeoJSONModeFlags(r)
211
393
  };
212
- e.color !== void 0 && (i.color = new W(e.color));
213
- const n = new de(i);
214
- return t.addOverlay(n, e.order), this._instances.set(e.id, {
394
+ e.color !== void 0 && (i.color = new Y(e.color));
395
+ const n = new ye(i);
396
+ return x(n), t.addOverlay(n, e.order), this._instances.set(e.id, {
215
397
  id: e.id,
216
398
  type: e.type,
217
399
  instance: n,
@@ -234,11 +416,11 @@ class B {
234
416
  const i = r.instance, n = r.options, o = {
235
417
  ...n.defaultStyle || {},
236
418
  ...t
237
- }, l = {
419
+ }, a = {
238
420
  ...n,
239
421
  defaultStyle: o
240
422
  };
241
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle: o }), !0;
423
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(a, a.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle: o }), !0;
242
424
  }
243
425
  updateGeoJSONStrokeStyle(e, t) {
244
426
  const r = this._instances.get(e);
@@ -246,12 +428,12 @@ class B {
246
428
  const i = r.instance, n = r.options, o = {
247
429
  ...n.defaultStyle || {},
248
430
  strokeStyle: t
249
- }, l = {
431
+ }, a = {
250
432
  ...n,
251
433
  strokeStyle: t,
252
434
  defaultStyle: o
253
435
  };
254
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle: o }), !0;
436
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(a, a.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle: o }), !0;
255
437
  }
256
438
  updateGeoJSONStrokeWidth(e, t) {
257
439
  const r = this._instances.get(e);
@@ -259,12 +441,12 @@ class B {
259
441
  const i = r.instance, n = r.options, o = {
260
442
  ...n.defaultStyle || {},
261
443
  strokeWidth: t
262
- }, l = {
444
+ }, a = {
263
445
  ...n,
264
446
  strokeWidth: t,
265
447
  defaultStyle: o
266
448
  };
267
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle: o }), !0;
449
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(a, a.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle: o }), !0;
268
450
  }
269
451
  updateGeoJSONFillStyle(e, t) {
270
452
  const r = this._instances.get(e);
@@ -272,12 +454,12 @@ class B {
272
454
  const i = r.instance, n = r.options, o = {
273
455
  ...n.defaultStyle || {},
274
456
  fillStyle: t
275
- }, l = {
457
+ }, a = {
276
458
  ...n,
277
459
  fillStyle: t,
278
460
  defaultStyle: o
279
461
  };
280
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle: o }), !0;
462
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(a, a.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle: o }), !0;
281
463
  }
282
464
  updateGeoJSONMode(e, t) {
283
465
  const r = this._instances.get(e);
@@ -328,14 +510,14 @@ class B {
328
510
  addCesiumIonOverlay(e) {
329
511
  const t = this._getImageOverlayPluginForAdd(e.id);
330
512
  if (!t) return null;
331
- const r = new We({
513
+ const r = new pt({
332
514
  assetId: e.assetId,
333
515
  apiToken: e.apiToken,
334
516
  autoRefreshToken: e.autoRefreshToken ?? !0,
335
517
  color: typeof e.color == "number" ? e.color : 16777215,
336
518
  opacity: e.opacity ?? 1
337
519
  });
338
- return t.addOverlay(r, e.order), this._instances.set(e.id, {
520
+ return x(r), t.addOverlay(r, e.order), this._instances.set(e.id, {
339
521
  id: e.id,
340
522
  type: e.type,
341
523
  instance: r,
@@ -350,12 +532,12 @@ class B {
350
532
  addTMSOverlay(e) {
351
533
  const t = this._getImageOverlayPluginForAdd(e.id);
352
534
  if (!t) return null;
353
- const r = new ze({
535
+ const r = new Ze({
354
536
  url: e.url,
355
537
  color: typeof e.color == "number" ? e.color : 16777215,
356
538
  opacity: e.opacity ?? 1
357
539
  });
358
- return t.addOverlay(r, e.order), this._instances.set(e.id, {
540
+ return x(r), t.addOverlay(r, e.order), this._instances.set(e.id, {
359
541
  id: e.id,
360
542
  type: e.type,
361
543
  instance: r,
@@ -370,12 +552,12 @@ class B {
370
552
  addXYZOverlay(e) {
371
553
  const t = this._getImageOverlayPluginForAdd(e.id);
372
554
  if (!t) return null;
373
- const r = new ke({
555
+ const r = new Fe({
374
556
  url: e.url,
375
557
  color: typeof e.color == "number" ? e.color : 16777215,
376
558
  opacity: e.opacity ?? 1
377
559
  });
378
- return t.addOverlay(r, e.order), this._instances.set(e.id, {
560
+ return x(r), t.addOverlay(r, e.order), this._instances.set(e.id, {
379
561
  id: e.id,
380
562
  type: e.type,
381
563
  instance: r,
@@ -421,7 +603,7 @@ class B {
421
603
  addUrlTemplateOverlay(e) {
422
604
  const t = this._getImageOverlayPluginForAdd(e.id);
423
605
  if (!t) return null;
424
- const r = new Je({
606
+ const r = new Ke({
425
607
  url: e.url,
426
608
  subdomains: e.subdomains,
427
609
  levels: e.levels,
@@ -432,7 +614,7 @@ class B {
432
614
  color: typeof e.color == "number" ? e.color : 16777215,
433
615
  opacity: e.opacity ?? 1
434
616
  });
435
- return t.addOverlay(r, e.order), this._instances.set(e.id, {
617
+ return x(r), t.addOverlay(r, e.order), this._instances.set(e.id, {
436
618
  id: e.id,
437
619
  type: e.type,
438
620
  instance: r,
@@ -453,17 +635,17 @@ class B {
453
635
  crs: e.crs || "EPSG:4326",
454
636
  format: e.format || "image/png",
455
637
  tileDimension: e.tileDimension || 256
456
- }, i = new $e({
638
+ }, i = new et({
457
639
  url: e.url,
458
640
  layer: r.layer,
459
641
  crs: r.crs,
460
642
  format: r.format,
461
643
  tileDimension: r.tileDimension,
462
644
  styles: r.styles,
463
- color: new W(typeof e.color == "number" ? e.color : 16777215),
645
+ color: new Y(typeof e.color == "number" ? e.color : 16777215),
464
646
  opacity: e.opacity ?? 1
465
647
  });
466
- return t.addOverlay(i, e.order), this._instances.set(e.id, {
648
+ return x(i), t.addOverlay(i, e.order), this._instances.set(e.id, {
467
649
  id: e.id,
468
650
  type: e.type,
469
651
  instance: i,
@@ -478,31 +660,33 @@ class B {
478
660
  async addWMTSOverlay(e) {
479
661
  const t = this._getImageOverlayPluginForAdd(e.id);
480
662
  if (!t) return null;
481
- const r = await new je().loadAsync(e.url), i = ["EPSG:4326", "EPSG:3857"];
482
- let n = e.layer || "";
483
- r.layers.find((l) => l.identifier === n) || (n = r.layers.find(
484
- (l) => l?.tileMatrixSets?.some((h) => i.includes(h.supportedCRS))
485
- )?.identifier || r.layers[0].identifier);
486
- const o = new He({
487
- capabilities: r,
488
- layer: n,
663
+ const r = new tt(), i = await w.utils.fetchResource(e.url, r.fetchOptions);
664
+ if (!i.ok) throw new Error(`Failed to load file "${e.url}" with status ${i.status} : ${i.statusText}`);
665
+ const n = r.parse(await i.arrayBuffer()), o = ["EPSG:4326", "EPSG:3857"];
666
+ let a = e.layer || "";
667
+ n.layers.find((c) => c.identifier === a) || (a = n.layers.find(
668
+ (c) => c?.tileMatrixSets?.some((d) => o.includes(d.supportedCRS))
669
+ )?.identifier || n.layers[0].identifier);
670
+ const h = new rt({
671
+ capabilities: n,
672
+ layer: a,
489
673
  dimensions: e.dimensions || null,
490
674
  style: e.style || void 0,
491
675
  tileMatrixSet: e.tileMatrixSet || null,
492
676
  planar: !1,
493
- color: new W(typeof e.color == "number" ? e.color : 16777215),
677
+ color: new Y(typeof e.color == "number" ? e.color : 16777215),
494
678
  opacity: e.opacity ?? 1
495
679
  });
496
- return t.addOverlay(o, e.order), this._instances.set(e.id, {
680
+ return x(h), t.addOverlay(h, e.order), this._instances.set(e.id, {
497
681
  id: e.id,
498
682
  type: e.type,
499
- instance: o,
683
+ instance: h,
500
684
  options: { ...e }
501
685
  }), this.resourceManager?.addOverlay({
502
686
  id: e.id,
503
687
  type: e.type,
504
688
  options: e
505
- }), o;
689
+ }), h;
506
690
  }
507
691
  // =============== 通用方法 ===============
508
692
  /**
@@ -668,7 +852,7 @@ class B {
668
852
  };
669
853
  }
670
854
  _getGeoJSONUtilityOverlay() {
671
- return this._geoJSONUtilityOverlay || (this._geoJSONUtilityOverlay = new de({})), this._geoJSONUtilityOverlay;
855
+ return this._geoJSONUtilityOverlay || (this._geoJSONUtilityOverlay = new ye({})), this._geoJSONUtilityOverlay;
672
856
  }
673
857
  _updateOverlayOptions(e, t) {
674
858
  const r = this._instances.get(e);
@@ -678,7 +862,7 @@ class B {
678
862
  }), this.resourceManager?.updateOverlay(e, t);
679
863
  }
680
864
  _getImageOverlayPluginForAdd(e) {
681
- return this.imageOverlayPlugin ? this._instances.has(e) ? (console.warn(`OverlayManager: Overlay "${e}" already exists`), null) : this._instances.size >= B.MAX_OVERLAY_INSTANCES ? (console.error(`OverlayManager: Cannot add overlay "${e}" because the maximum number of overlays is ${B.MAX_OVERLAY_INSTANCES}`), null) : this.imageOverlayPlugin : null;
865
+ return this.imageOverlayPlugin ? this._instances.has(e) ? (console.warn(`OverlayManager: Overlay "${e}" already exists`), null) : this._instances.size >= j.MAX_OVERLAY_INSTANCES ? (console.error(`OverlayManager: Cannot add overlay "${e}" because the maximum number of overlays is ${j.MAX_OVERLAY_INSTANCES}`), null) : this.imageOverlayPlugin : null;
682
866
  }
683
867
  /**
684
868
  * 获取本地影像数量(不依赖 ResourceManager)
@@ -704,7 +888,7 @@ class B {
704
888
  this.disposeInstances(), this.resourceManager?.clear();
705
889
  }
706
890
  }
707
- class tt {
891
+ class vt {
708
892
  /** Overlay 资源配置 */
709
893
  _overlays = /* @__PURE__ */ new Map();
710
894
  // =============== Overlay 资源管理 ===============
@@ -794,7 +978,7 @@ class tt {
794
978
  e.overlays && (this._overlays.clear(), e.overlays.forEach((t) => this._overlays.set(t.id, { ...t })));
795
979
  }
796
980
  }
797
- class rt {
981
+ class _t {
798
982
  /** 地形配置映射表 */
799
983
  _terrains = /* @__PURE__ */ new Map();
800
984
  /** 当前激活的地形 ID */
@@ -883,7 +1067,7 @@ class rt {
883
1067
  this.clear();
884
1068
  }
885
1069
  }
886
- class x extends De {
1070
+ class E extends Xe {
887
1071
  /**
888
1072
  * 类别。基类构造为空串,子类用 `readonly category = 'xxx' as const` 覆写。
889
1073
  * 桥接器据此 switch 分支。
@@ -924,11 +1108,11 @@ class x extends De {
924
1108
  if (this.boundingBox && this._boundingBoxCacheKey === e)
925
1109
  return;
926
1110
  const t = this._boundingBoxResolver?.(this);
927
- this.boundingBox = t?.clone() ?? new te(), this.boundingSphere = null, this._boundingBoxCacheKey = e;
1111
+ this.boundingBox = t?.clone() ?? new de(), this.boundingSphere = null, this._boundingBoxCacheKey = e;
928
1112
  }
929
1113
  /** 按 Three.js Object3D 包围体协议更新 boundingSphere。 */
930
1114
  computeBoundingSphere() {
931
- this.computeBoundingBox(), !this.boundingSphere && (this.boundingSphere = this.boundingBox?.getBoundingSphere(new G()) ?? new G());
1115
+ this.computeBoundingBox(), !this.boundingSphere && (this.boundingSphere = this.boundingBox?.getBoundingSphere(new $()) ?? new $());
932
1116
  }
933
1117
  /**
934
1118
  * 不可变整表替换:用展开 + patch 重建 options。
@@ -973,7 +1157,7 @@ class x extends De {
973
1157
  return this.options.points || [];
974
1158
  }
975
1159
  }
976
- class it extends x {
1160
+ class Mt extends E {
977
1161
  category = "point";
978
1162
  constructor(e) {
979
1163
  super(e);
@@ -992,7 +1176,7 @@ class it extends x {
992
1176
  return this.getCenterPoints();
993
1177
  }
994
1178
  }
995
- class st extends x {
1179
+ class Ot extends E {
996
1180
  category = "line";
997
1181
  constructor(e) {
998
1182
  super(e);
@@ -1002,7 +1186,7 @@ class st extends x {
1002
1186
  this.options = { ...this.options, ...e };
1003
1187
  }
1004
1188
  }
1005
- class nt extends x {
1189
+ class St extends E {
1006
1190
  category = "polygon";
1007
1191
  constructor(e) {
1008
1192
  super(e);
@@ -1012,7 +1196,7 @@ class nt extends x {
1012
1196
  this.options = { ...this.options, ...e };
1013
1197
  }
1014
1198
  }
1015
- class ot extends x {
1199
+ class bt extends E {
1016
1200
  category = "rectangle";
1017
1201
  constructor(e) {
1018
1202
  super(e);
@@ -1022,8 +1206,8 @@ class ot extends x {
1022
1206
  this.options = { ...this.options, ...e };
1023
1207
  }
1024
1208
  }
1025
- const at = p.DEG2RAD, pe = 111320;
1026
- class lt extends x {
1209
+ const Tt = v.DEG2RAD, be = 111320;
1210
+ class xt extends E {
1027
1211
  category = "sector";
1028
1212
  constructor(e) {
1029
1213
  super(e);
@@ -1036,14 +1220,14 @@ class lt extends x {
1036
1220
  getExtentPoints() {
1037
1221
  const e = this.options.points;
1038
1222
  if (!e || e.length === 0) return [];
1039
- const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (pe * Math.cos(r * at)), o = i / pe;
1223
+ const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (be * Math.cos(r * Tt)), o = i / be;
1040
1224
  return [
1041
1225
  [t - n, r - o],
1042
1226
  [t + n, r + o]
1043
1227
  ];
1044
1228
  }
1045
1229
  }
1046
- class ct extends x {
1230
+ class Ct extends E {
1047
1231
  category = "arrow";
1048
1232
  /** generateCoords() 填充的闭合多边形顶点;初始为空 */
1049
1233
  generatedCoords = [];
@@ -1071,22 +1255,22 @@ class ct extends x {
1071
1255
  return this.generatedCoords = [], this.generatedCoords;
1072
1256
  switch (this.options.arrowType) {
1073
1257
  case "fine":
1074
- this.generatedCoords = Y(e[0], e[1]);
1258
+ this.generatedCoords = ee(e[0], e[1]);
1075
1259
  break;
1076
1260
  case "assaultDirection":
1077
- this.generatedCoords = Ne(e[0], e[1]);
1261
+ this.generatedCoords = Je(e[0], e[1]);
1078
1262
  break;
1079
1263
  case "attack":
1080
- this.generatedCoords = Re(e);
1264
+ this.generatedCoords = ze(e);
1081
1265
  break;
1082
1266
  case "swallowtailAttack":
1083
- this.generatedCoords = Ie(e);
1267
+ this.generatedCoords = We(e);
1084
1268
  break;
1085
1269
  case "curved":
1086
- this.generatedCoords = Ee(e);
1270
+ this.generatedCoords = Be(e);
1087
1271
  break;
1088
1272
  default:
1089
- this.generatedCoords = Y(e[0], e[e.length - 1]);
1273
+ this.generatedCoords = ee(e[0], e[e.length - 1]);
1090
1274
  break;
1091
1275
  }
1092
1276
  return this.generatedCoords;
@@ -1113,7 +1297,7 @@ class ct extends x {
1113
1297
  };
1114
1298
  }
1115
1299
  }
1116
- class ht extends x {
1300
+ class kt extends E {
1117
1301
  category = "text";
1118
1302
  constructor(e) {
1119
1303
  super(e);
@@ -1132,8 +1316,8 @@ class ht extends x {
1132
1316
  return this.getCenterPoints();
1133
1317
  }
1134
1318
  }
1135
- const dt = p.DEG2RAD, fe = 111320;
1136
- class ut extends x {
1319
+ const Rt = v.DEG2RAD, Te = 111320;
1320
+ class Pt extends E {
1137
1321
  category = "circle";
1138
1322
  constructor(e) {
1139
1323
  super(e);
@@ -1146,274 +1330,274 @@ class ut extends x {
1146
1330
  getExtentPoints() {
1147
1331
  const e = this.options.points;
1148
1332
  if (!e || e.length === 0) return [];
1149
- const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (fe * Math.cos(r * dt)), o = i / fe;
1333
+ const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (Te * Math.cos(r * Rt)), o = i / Te;
1150
1334
  return [
1151
1335
  [t - n, r - o],
1152
1336
  [t + n, r + o]
1153
1337
  ];
1154
1338
  }
1155
1339
  }
1156
- const gt = 3, pt = 1e3;
1157
- function ft(s) {
1340
+ const Et = 3, It = 1e3;
1341
+ function Lt(s) {
1158
1342
  return Number.isFinite(s) ? Math.max(Math.round(s), 0) : 0;
1159
1343
  }
1160
- function yt(s) {
1161
- const e = ft(s), t = pt + e * gt;
1344
+ function At(s) {
1345
+ const e = Lt(s), t = It + e * Et;
1162
1346
  if (!Number.isSafeInteger(t))
1163
1347
  throw new Error("Plot renderOrder exceeded JavaScript safe integer range.");
1164
1348
  return t;
1165
1349
  }
1166
- new a(1, 1, 0);
1167
- new a();
1168
- new a();
1169
- new a();
1170
- new a();
1171
- new a();
1172
- new a();
1173
- new a();
1174
- new a();
1175
- new a();
1176
- new a();
1177
- new a();
1178
- new a();
1179
- new a();
1180
- new g();
1181
- new a();
1182
- new a();
1183
- new a();
1184
- new a();
1185
- new a();
1186
- new a();
1187
- new a();
1188
- new a();
1189
- Object.freeze(new a(0, 0, 1));
1190
- new a();
1191
- new a();
1192
- new a();
1193
- new a();
1194
- new a();
1195
- new a();
1196
- new a();
1197
- new a();
1198
- new Ce();
1350
+ new l(1, 1, 0);
1351
+ new l();
1352
+ new l();
1353
+ new l();
1354
+ new l();
1355
+ new l();
1356
+ new l();
1357
+ new l();
1358
+ new l();
1359
+ new l();
1360
+ new l();
1361
+ new l();
1362
+ new l();
1363
+ new l();
1364
+ new f();
1365
+ new l();
1366
+ new l();
1367
+ new l();
1368
+ new l();
1369
+ new l();
1370
+ new l();
1371
+ new l();
1372
+ new l();
1373
+ Object.freeze(new l(0, 0, 1));
1374
+ new l();
1375
+ new l();
1376
+ new l();
1377
+ new l();
1378
+ new l();
1379
+ new l();
1380
+ new l();
1381
+ new l();
1382
+ new Ge();
1199
1383
  new Array(9);
1200
- new a();
1201
- new a();
1202
- new a();
1203
- new a();
1204
- new a();
1205
- new a();
1206
- new a();
1207
- new a();
1208
- new a();
1209
- new a();
1210
- new a();
1211
- new a();
1212
- new a();
1213
- new a();
1214
- new a();
1215
- new a();
1216
- new g();
1217
- new a();
1218
- new a();
1219
- new a();
1384
+ new l();
1385
+ new l();
1386
+ new l();
1387
+ new l();
1388
+ new l();
1389
+ new l();
1390
+ new l();
1391
+ new l();
1392
+ new l();
1393
+ new l();
1394
+ new l();
1395
+ new l();
1396
+ new l();
1397
+ new l();
1398
+ new l();
1399
+ new l();
1400
+ new f();
1401
+ new l();
1402
+ new l();
1403
+ new l();
1404
+ new ot();
1405
+ new l();
1406
+ new l();
1407
+ new l();
1408
+ new l();
1409
+ new l();
1410
+ new l();
1411
+ new l();
1412
+ new l();
1413
+ new l();
1414
+ new l();
1415
+ new l();
1416
+ new l();
1417
+ new l();
1418
+ new l();
1419
+ new l();
1420
+ new l();
1421
+ new l();
1422
+ new l();
1423
+ new l();
1424
+ new l();
1425
+ new l();
1426
+ new l();
1427
+ new l();
1428
+ new l();
1429
+ new l();
1430
+ new l();
1431
+ new l();
1220
1432
  new Ge();
1221
- new a();
1222
- new a();
1223
- new a();
1224
- new a();
1225
- new a();
1226
- new a();
1227
- new a();
1228
- new a();
1229
- new a();
1230
- new a();
1231
- new a();
1232
- new a();
1233
- new a();
1234
- new a();
1235
- new a();
1236
- new a();
1237
- new a();
1238
- new a();
1239
- new a();
1240
- new a();
1241
- new a();
1242
- new a();
1243
- new a();
1244
- new a();
1245
- new a();
1246
- new a();
1247
- new a();
1248
- new Ce();
1249
- new a();
1250
- new a();
1251
- new a();
1252
- new a();
1253
- new a();
1254
- new a();
1255
- new a();
1256
- new a();
1257
- new a();
1258
- new a();
1259
- new a();
1260
- new a();
1261
- new a();
1262
- new a();
1263
- new a();
1264
- new a();
1265
- new a();
1266
- new a();
1267
- new a();
1268
- new a();
1269
- new a();
1270
- new a();
1271
- new a();
1272
- new a();
1273
- new a();
1274
- new a();
1275
- new a();
1276
- new a();
1277
- new g();
1278
- new g();
1279
- new a();
1280
- new a();
1281
- new a();
1282
- new a();
1283
- new a();
1284
- new a();
1285
- new a();
1286
- new g();
1287
- new g();
1288
- new a();
1289
- new a();
1290
- new a();
1291
- new g();
1292
- new g();
1293
- new a();
1294
- new a();
1295
- new a();
1296
- new a();
1297
- new g();
1298
- new g();
1299
- new a();
1300
- new a();
1301
- new a();
1302
- new a();
1303
- new a();
1304
- new a();
1305
- new a();
1306
- new a();
1307
- new a();
1308
- new a();
1309
- new a();
1310
- new g();
1311
- new a();
1312
- new a();
1313
- new a();
1314
- new a();
1315
- new a();
1316
- new a();
1317
- new a();
1318
- new a();
1319
- new a();
1320
- new a();
1321
- new a();
1322
- new a();
1323
- new a();
1324
- new a();
1325
- new g();
1326
- new g();
1327
- new a();
1328
- new a();
1329
- new a();
1330
- new g();
1331
- new g();
1332
- new a();
1333
- new a();
1334
- new g();
1335
- new g();
1336
- new a();
1337
- new a();
1338
- new a();
1339
- new a();
1340
- new a();
1341
- class b {
1433
+ new l();
1434
+ new l();
1435
+ new l();
1436
+ new l();
1437
+ new l();
1438
+ new l();
1439
+ new l();
1440
+ new l();
1441
+ new l();
1442
+ new l();
1443
+ new l();
1444
+ new l();
1445
+ new l();
1446
+ new l();
1447
+ new l();
1448
+ new l();
1449
+ new l();
1450
+ new l();
1451
+ new l();
1452
+ new l();
1453
+ new l();
1454
+ new l();
1455
+ new l();
1456
+ new l();
1457
+ new l();
1458
+ new l();
1459
+ new l();
1460
+ new l();
1461
+ new f();
1462
+ new f();
1463
+ new l();
1464
+ new l();
1465
+ new l();
1466
+ new l();
1467
+ new l();
1468
+ new l();
1469
+ new l();
1470
+ new f();
1471
+ new f();
1472
+ new l();
1473
+ new l();
1474
+ new l();
1475
+ new f();
1476
+ new f();
1477
+ new l();
1478
+ new l();
1479
+ new l();
1480
+ new l();
1481
+ new f();
1482
+ new f();
1483
+ new l();
1484
+ new l();
1485
+ new l();
1486
+ new l();
1487
+ new l();
1488
+ new l();
1489
+ new l();
1490
+ new l();
1491
+ new l();
1492
+ new l();
1493
+ new l();
1494
+ new f();
1495
+ new l();
1496
+ new l();
1497
+ new l();
1498
+ new l();
1499
+ new l();
1500
+ new l();
1501
+ new l();
1502
+ new l();
1503
+ new l();
1504
+ new l();
1505
+ new l();
1506
+ new l();
1507
+ new l();
1508
+ new l();
1509
+ new f();
1510
+ new f();
1511
+ new l();
1512
+ new l();
1513
+ new l();
1514
+ new f();
1515
+ new f();
1516
+ new l();
1517
+ new l();
1518
+ new f();
1519
+ new f();
1520
+ new l();
1521
+ new l();
1522
+ new l();
1523
+ new l();
1524
+ new l();
1525
+ class P {
1342
1526
  constructor(e, t) {
1343
1527
  this.next = null, this.key = e, this.data = t, this.left = null, this.right = null;
1344
1528
  }
1345
1529
  }
1346
- function mt(s, e) {
1530
+ function Nt(s, e) {
1347
1531
  return s > e ? 1 : s < e ? -1 : 0;
1348
1532
  }
1349
- function O(s, e, t) {
1350
- const r = new b(null, null);
1533
+ function k(s, e, t) {
1534
+ const r = new P(null, null);
1351
1535
  let i = r, n = r;
1352
1536
  for (; ; ) {
1353
1537
  const o = t(s, e.key);
1354
1538
  if (o < 0) {
1355
1539
  if (e.left === null) break;
1356
1540
  if (t(s, e.left.key) < 0) {
1357
- const l = e.left;
1358
- if (e.left = l.right, l.right = e, e = l, e.left === null) break;
1541
+ const a = e.left;
1542
+ if (e.left = a.right, a.right = e, e = a, e.left === null) break;
1359
1543
  }
1360
1544
  n.left = e, n = e, e = e.left;
1361
1545
  } else if (o > 0) {
1362
1546
  if (e.right === null) break;
1363
1547
  if (t(s, e.right.key) > 0) {
1364
- const l = e.right;
1365
- if (e.right = l.left, l.left = e, e = l, e.right === null) break;
1548
+ const a = e.right;
1549
+ if (e.right = a.left, a.left = e, e = a, e.right === null) break;
1366
1550
  }
1367
1551
  i.right = e, i = e, e = e.right;
1368
1552
  } else break;
1369
1553
  }
1370
1554
  return i.right = e.left, n.left = e.right, e.left = r.right, e.right = r.left, e;
1371
1555
  }
1372
- function z(s, e, t, r) {
1373
- const i = new b(s, e);
1556
+ function Q(s, e, t, r) {
1557
+ const i = new P(s, e);
1374
1558
  if (t === null)
1375
1559
  return i.left = i.right = null, i;
1376
- t = O(s, t, r);
1560
+ t = k(s, t, r);
1377
1561
  const n = r(s, t.key);
1378
1562
  return n < 0 ? (i.left = t.left, i.right = t, t.left = null) : n >= 0 && (i.right = t.right, i.left = t, t.right = null), i;
1379
1563
  }
1380
- function ye(s, e, t) {
1564
+ function xe(s, e, t) {
1381
1565
  let r = null, i = null;
1382
1566
  if (e) {
1383
- e = O(s, e, t);
1567
+ e = k(s, e, t);
1384
1568
  const n = t(e.key, s);
1385
1569
  n === 0 ? (r = e.left, i = e.right) : n < 0 ? (i = e.right, e.right = null, r = e) : (r = e.left, e.left = null, i = e);
1386
1570
  }
1387
1571
  return { left: r, right: i };
1388
1572
  }
1389
- function vt(s, e, t) {
1390
- return e === null ? s : (s === null || (e = O(s.key, e, t), e.left = s), e);
1573
+ function Ft(s, e, t) {
1574
+ return e === null ? s : (s === null || (e = k(s.key, e, t), e.left = s), e);
1391
1575
  }
1392
- function X(s, e, t, r, i) {
1576
+ function te(s, e, t, r, i) {
1393
1577
  if (s) {
1394
1578
  r(`${e}${t ? "└── " : "├── "}${i(s)}
1395
1579
  `);
1396
1580
  const n = e + (t ? " " : "│ ");
1397
- s.left && X(s.left, n, !1, r, i), s.right && X(s.right, n, !0, r, i);
1581
+ s.left && te(s.left, n, !1, r, i), s.right && te(s.right, n, !0, r, i);
1398
1582
  }
1399
1583
  }
1400
- class wt {
1401
- constructor(e = mt) {
1584
+ class Dt {
1585
+ constructor(e = Nt) {
1402
1586
  this._root = null, this._size = 0, this._comparator = e;
1403
1587
  }
1404
1588
  /**
1405
1589
  * Inserts a key, allows duplicates
1406
1590
  */
1407
1591
  insert(e, t) {
1408
- return this._size++, this._root = z(e, t, this._root, this._comparator);
1592
+ return this._size++, this._root = Q(e, t, this._root, this._comparator);
1409
1593
  }
1410
1594
  /**
1411
1595
  * Adds a key, if it is not present in the tree
1412
1596
  */
1413
1597
  add(e, t) {
1414
- const r = new b(e, t);
1598
+ const r = new P(e, t);
1415
1599
  this._root === null && (r.left = r.right = null, this._size++, this._root = r);
1416
- const i = this._comparator, n = O(e, this._root, i), o = i(e, n.key);
1600
+ const i = this._comparator, n = k(e, this._root, i), o = i(e, n.key);
1417
1601
  return o === 0 ? this._root = n : (o < 0 ? (r.left = n.left, r.right = n, n.left = null) : o > 0 && (r.right = n.right, r.left = n, n.right = null), this._size++, this._root = r), this._root;
1418
1602
  }
1419
1603
  /**
@@ -1428,7 +1612,7 @@ class wt {
1428
1612
  */
1429
1613
  _remove(e, t, r) {
1430
1614
  let i;
1431
- return t === null ? null : (t = O(e, t, r), r(e, t.key) === 0 ? (t.left === null ? i = t.right : (i = O(e, t.left, r), i.right = t.right), this._size--, i) : t);
1615
+ return t === null ? null : (t = k(e, t, r), r(e, t.key) === 0 ? (t.left === null ? i = t.right : (i = k(e, t.left, r), i.right = t.right), this._size--, i) : t);
1432
1616
  }
1433
1617
  /**
1434
1618
  * Removes and returns the node with smallest key
@@ -1437,7 +1621,7 @@ class wt {
1437
1621
  let e = this._root;
1438
1622
  if (e) {
1439
1623
  for (; e.left; ) e = e.left;
1440
- return this._root = O(e.key, this._root, this._comparator), this._root = this._remove(e.key, this._root, this._comparator), { key: e.key, data: e.data };
1624
+ return this._root = k(e.key, this._root, this._comparator), this._root = this._remove(e.key, this._root, this._comparator), { key: e.key, data: e.data };
1441
1625
  }
1442
1626
  return null;
1443
1627
  }
@@ -1455,7 +1639,7 @@ class wt {
1455
1639
  return null;
1456
1640
  }
1457
1641
  find(e) {
1458
- return this._root && (this._root = O(e, this._root, this._comparator), this._comparator(e, this._root.key) !== 0) ? null : this._root;
1642
+ return this._root && (this._root = k(e, this._root, this._comparator), this._comparator(e, this._root.key) !== 0) ? null : this._root;
1459
1643
  }
1460
1644
  contains(e) {
1461
1645
  let t = this._root;
@@ -1480,16 +1664,16 @@ class wt {
1480
1664
  */
1481
1665
  range(e, t, r, i) {
1482
1666
  const n = [], o = this._comparator;
1483
- let l = this._root, h;
1484
- for (; n.length !== 0 || l; )
1485
- if (l)
1486
- n.push(l), l = l.left;
1667
+ let a = this._root, h;
1668
+ for (; n.length !== 0 || a; )
1669
+ if (a)
1670
+ n.push(a), a = a.left;
1487
1671
  else {
1488
- if (l = n.pop(), h = o(l.key, t), h > 0)
1672
+ if (a = n.pop(), h = o(a.key, t), h > 0)
1489
1673
  break;
1490
- if (o(l.key, e) >= 0 && r.call(i, l))
1674
+ if (o(a.key, e) >= 0 && r.call(i, a))
1491
1675
  return this;
1492
- l = l.right;
1676
+ a = a.right;
1493
1677
  }
1494
1678
  return this;
1495
1679
  }
@@ -1572,7 +1756,7 @@ class wt {
1572
1756
  return this._root = null, this._size = 0, this;
1573
1757
  }
1574
1758
  toList() {
1575
- return Mt(this._root);
1759
+ return Gt(this._root);
1576
1760
  }
1577
1761
  /**
1578
1762
  * Bulk-load items. Both array have to be same size
@@ -1580,15 +1764,15 @@ class wt {
1580
1764
  load(e, t = [], r = !1) {
1581
1765
  let i = e.length;
1582
1766
  const n = this._comparator;
1583
- if (r && Z(e, t, 0, i - 1, n), this._root === null)
1584
- this._root = V(e, t, 0, i), this._size = i;
1767
+ if (r && se(e, t, 0, i - 1, n), this._root === null)
1768
+ this._root = re(e, t, 0, i), this._size = i;
1585
1769
  else {
1586
- const o = Ot(
1770
+ const o = Bt(
1587
1771
  this.toList(),
1588
- _t(e, t),
1772
+ Ut(e, t),
1589
1773
  n
1590
1774
  );
1591
- i = this._size + i, this._root = q({ head: o }, 0, i);
1775
+ i = this._size + i, this._root = ie({ head: o }, 0, i);
1592
1776
  }
1593
1777
  return this;
1594
1778
  }
@@ -1603,15 +1787,15 @@ class wt {
1603
1787
  }
1604
1788
  toString(e = (t) => String(t.key)) {
1605
1789
  const t = [];
1606
- return X(this._root, "", !0, (r) => t.push(r), e), t.join("");
1790
+ return te(this._root, "", !0, (r) => t.push(r), e), t.join("");
1607
1791
  }
1608
1792
  update(e, t, r) {
1609
1793
  const i = this._comparator;
1610
- let { left: n, right: o } = ye(e, this._root, i);
1611
- i(e, t) < 0 ? o = z(t, r, o, i) : n = z(t, r, n, i), this._root = vt(n, o, i);
1794
+ let { left: n, right: o } = xe(e, this._root, i);
1795
+ i(e, t) < 0 ? o = Q(t, r, o, i) : n = Q(t, r, n, i), this._root = Ft(n, o, i);
1612
1796
  }
1613
1797
  split(e) {
1614
- return ye(e, this._root, this._comparator);
1798
+ return xe(e, this._root, this._comparator);
1615
1799
  }
1616
1800
  *[Symbol.iterator]() {
1617
1801
  let e = this._root;
@@ -1621,77 +1805,77 @@ class wt {
1621
1805
  e !== null ? (t.push(e), e = e.left) : t.length !== 0 ? (e = t.pop(), yield e, e = e.right) : r = !0;
1622
1806
  }
1623
1807
  }
1624
- function V(s, e, t, r) {
1808
+ function re(s, e, t, r) {
1625
1809
  const i = r - t;
1626
1810
  if (i > 0) {
1627
- const n = t + Math.floor(i / 2), o = s[n], l = e[n], h = new b(o, l);
1628
- return h.left = V(s, e, t, n), h.right = V(s, e, n + 1, r), h;
1811
+ const n = t + Math.floor(i / 2), o = s[n], a = e[n], h = new P(o, a);
1812
+ return h.left = re(s, e, t, n), h.right = re(s, e, n + 1, r), h;
1629
1813
  }
1630
1814
  return null;
1631
1815
  }
1632
- function _t(s, e) {
1633
- const t = new b(null, null);
1816
+ function Ut(s, e) {
1817
+ const t = new P(null, null);
1634
1818
  let r = t;
1635
1819
  for (let i = 0; i < s.length; i++)
1636
- r = r.next = new b(s[i], e[i]);
1820
+ r = r.next = new P(s[i], e[i]);
1637
1821
  return r.next = null, t.next;
1638
1822
  }
1639
- function Mt(s) {
1823
+ function Gt(s) {
1640
1824
  let e = s;
1641
1825
  const t = [];
1642
1826
  let r = !1;
1643
- const i = new b(null, null);
1827
+ const i = new P(null, null);
1644
1828
  let n = i;
1645
1829
  for (; !r; )
1646
1830
  e ? (t.push(e), e = e.left) : t.length > 0 ? (e = n = n.next = t.pop(), e = e.right) : r = !0;
1647
1831
  return n.next = null, i.next;
1648
1832
  }
1649
- function q(s, e, t) {
1833
+ function ie(s, e, t) {
1650
1834
  const r = t - e;
1651
1835
  if (r > 0) {
1652
- const i = e + Math.floor(r / 2), n = q(s, e, i), o = s.head;
1653
- return o.left = n, s.head = s.head.next, o.right = q(s, i + 1, t), o;
1836
+ const i = e + Math.floor(r / 2), n = ie(s, e, i), o = s.head;
1837
+ return o.left = n, s.head = s.head.next, o.right = ie(s, i + 1, t), o;
1654
1838
  }
1655
1839
  return null;
1656
1840
  }
1657
- function Ot(s, e, t) {
1658
- const r = new b(null, null);
1841
+ function Bt(s, e, t) {
1842
+ const r = new P(null, null);
1659
1843
  let i = r, n = s, o = e;
1660
1844
  for (; n !== null && o !== null; )
1661
1845
  t(n.key, o.key) < 0 ? (i.next = n, n = n.next) : (i.next = o, o = o.next), i = i.next;
1662
1846
  return n !== null ? i.next = n : o !== null && (i.next = o), r.next;
1663
1847
  }
1664
- function Z(s, e, t, r, i) {
1848
+ function se(s, e, t, r, i) {
1665
1849
  if (t >= r) return;
1666
1850
  const n = s[t + r >> 1];
1667
- let o = t - 1, l = r + 1;
1851
+ let o = t - 1, a = r + 1;
1668
1852
  for (; ; ) {
1669
1853
  do
1670
1854
  o++;
1671
1855
  while (i(s[o], n) < 0);
1672
1856
  do
1673
- l--;
1674
- while (i(s[l], n) > 0);
1675
- if (o >= l) break;
1857
+ a--;
1858
+ while (i(s[a], n) > 0);
1859
+ if (o >= a) break;
1676
1860
  let h = s[o];
1677
- s[o] = s[l], s[l] = h, h = e[o], e[o] = e[l], e[l] = h;
1861
+ s[o] = s[a], s[a] = h, h = e[o], e[o] = e[a], e[a] = h;
1678
1862
  }
1679
- Z(s, e, t, l, i), Z(s, e, l + 1, r, i);
1863
+ se(s, e, t, a, i), se(s, e, a + 1, r, i);
1680
1864
  }
1681
- let S = Number.EPSILON;
1682
- S === void 0 && (S = Math.pow(2, -52));
1683
- const St = S * S, me = (s, e) => {
1684
- if (-S < s && s < S && -S < e && e < S)
1865
+ let R = Number.EPSILON;
1866
+ R === void 0 && (R = Math.pow(2, -52));
1867
+ const Wt = R * R, Ce = (s, e) => {
1868
+ if (-R < s && s < R && -R < e && e < R)
1685
1869
  return 0;
1686
1870
  const t = s - e;
1687
- return t * t < St * s * e ? 0 : s < e ? -1 : 1;
1871
+ return t * t < Wt * s * e ? 0 : s < e ? -1 : 1;
1688
1872
  };
1689
- class bt {
1873
+ class zt {
1690
1874
  constructor() {
1691
1875
  this.reset();
1692
1876
  }
1693
1877
  reset() {
1694
- this.xRounder = new ve(), this.yRounder = new ve();
1878
+ this.xRounder = new ke(), this.yRounder = new ke();
1695
1879
  }
1696
1880
  round(e, t) {
1697
1881
  return {
@@ -1700,9 +1884,9 @@ class bt {
1700
1884
  };
1701
1885
  }
1702
1886
  }
1703
- class ve {
1887
+ class ke {
1704
1888
  constructor() {
1705
- this.tree = new wt(), this.round(0);
1889
+ this.tree = new Dt(), this.round(0);
1706
1890
  }
1707
1891
  // Note: this can rounds input values backwards or forwards.
1708
1892
  // You might ask, why not restrict this to just rounding
@@ -1713,47 +1897,47 @@ class ve {
1713
1897
  // angle for t-intersections).
1714
1898
  round(e) {
1715
1899
  const t = this.tree.add(e), r = this.tree.prev(t);
1716
- if (r !== null && me(t.key, r.key) === 0)
1900
+ if (r !== null && Ce(t.key, r.key) === 0)
1717
1901
  return this.tree.remove(e), r.key;
1718
1902
  const i = this.tree.next(t);
1719
- return i !== null && me(t.key, i.key) === 0 ? (this.tree.remove(e), i.key) : e;
1903
+ return i !== null && Ce(t.key, i.key) === 0 ? (this.tree.remove(e), i.key) : e;
1720
1904
  }
1721
1905
  }
1722
- new bt();
1906
+ new zt();
1723
1907
  typeof process < "u" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE;
1724
1908
  typeof process < "u" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS;
1725
- p.DEG2RAD;
1726
- p.DEG2RAD;
1727
- const xt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e联动单位%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:联动;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-linkage'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20fill='none'%3e%3cpath%20d='M50%2050L22%2024M50%2050l28-26M50%2050L20%2076M50%2050l30%2026'/%3e%3ccircle%20cx='50'%20cy='50'%20r='13'%20fill='currentColor'/%3e%3ccircle%20cx='22'%20cy='24'%20r='10'/%3e%3ccircle%20cx='78'%20cy='24'%20r='10'/%3e%3ccircle%20cx='20'%20cy='76'%20r='10'/%3e%3ccircle%20cx='80'%20cy='76'%20r='10'/%3e%3c/g%3e%3cpath%20d='M44%2050l4%204%209-10'%20fill='none'%20stroke='%23F8FAFC'%20stroke-width='5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23B67CFF'%3e%3cuse%20href='%23icon-linkage'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Ct = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e保障物资点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:物资;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-supplies'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M18%2035l32-16%2032%2016v44L50%2092%2018%2079zM18%2035l32%2017%2032-17M50%2052v40'/%3e%3cpath%20d='M34%2027l32%2017'/%3e%3c/g%3e%3cpath%20d='M41%2058h18v8h-18zM46%2053h8v18h-8z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FFAD33'%3e%3cuse%20href='%23icon-supplies'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Tt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e消防站%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防站;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-fire-station'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M13%2088h74M20%2088V39l30-22%2030%2022v49M31%2088V60h38v28M41%2088V70h18v18'/%3e%3cpath%20d='M20%2041h60'/%3e%3c/g%3e%3cpath%20d='M50%2029c-9%2010-12%2016-9%2022%202%204%205%206%209%206s8-2%2010-6c3-6%200-12-10-22z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF6B2C'%3e%3cuse%20href='%23icon-fire-station'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", kt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e消防水池%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:水源;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-fire-pool'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M16%2039h68v43H16zM25%2055c6-5%2012-5%2018%200s12%205%2018%200%2012-5%2018%200M25%2068c6-5%2012-5%2018%200s12%205%2018%200%2012-5%2018%200'/%3e%3cpath%20d='M67%2021v28M77%2021v28M67%2029h10M67%2039h10'/%3e%3c/g%3e%3cpath%20d='M28%2025h25l-6%207H28z'%20fill='currentColor'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2338BDF8'%3e%3cuse%20href='%23icon-fire-pool'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Pt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e医院资源点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:医疗;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hospital'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M18%2087V29h64v58M10%2087h80M29%2087V72h14v15M57%2087V72h14v15'/%3e%3cpath%20d='M50%2038v22M39%2049h22'%20stroke='%23F8FAFC'%20stroke-width='9'/%3e%3c/g%3e%3cpath%20d='M27%2022h46v12H27z'%20fill='currentColor'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2322D3EE'%3e%3cuse%20href='%23icon-hospital'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Et = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e市政消火栓%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-municipal'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M10%2086h80M18%2086V48h18v38M64%2086V35h20v51M21%2057h4M29%2057h4M21%2068h4M29%2068h4M69%2046h4M77%2046h4M69%2058h4M77%2058h4'%20opacity='0.7'/%3e%3cpath%20d='M42%2086V60h18v26M39%2060h24l-4-11H43zM46%2049v-7h10v7'/%3e%3cpath%20d='M42%2067h-8v12h8M60%2067h8v12h-8'/%3e%3c/g%3e%3ccircle%20cx='51'%20cy='72'%20r='5'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-municipal'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", It = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e天然水源%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:水源;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-natural-water'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M14%2050l20-24%2014%2016%2011-12%2027%2029'/%3e%3cpath%20d='M15%2064c8-6%2015-6%2023%200s15%206%2023%200%2015-6%2024%200M15%2078c8-6%2015-6%2023%200s15%206%2023%200%2015-6%2024%200'/%3e%3c/g%3e%3ccircle%20cx='72'%20cy='23'%20r='8'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2338BDF8'%3e%3cuse%20href='%23icon-natural-water'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Rt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓(地上式)%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-ground'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='7'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M12%2084h76M38%2084V45h24v39M38%2057H24v16h14M62%2057h14v16H62'/%3e%3cpath%20d='M33%2045h34l-5-16H38zM44%2029v-8h12v8'/%3e%3ccircle%20cx='24'%20cy='65'%20r='5'%20fill='currentColor'/%3e%3ccircle%20cx='76'%20cy='65'%20r='5'%20fill='currentColor'/%3e%3c/g%3e%3cpath%20d='M50%2055l7%2012H43z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-ground'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Nt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓(地下式)%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-underground'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M12%2040h76'/%3e%3cellipse%20cx='50'%20cy='39'%20rx='22'%20ry='9'%20fill='currentColor'/%3e%3cpath%20d='M35%2045v30h30V45M42%2075v12M58%2075v12M31%2087h38'/%3e%3cpath%20d='M43%2054h14M50%2047v18'%20stroke='%23F8FAFC'/%3e%3c/g%3e%3cpath%20d='M25%2028l-7-8M75%2028l7-8'%20stroke='currentColor'%20stroke-width='5'%20stroke-linecap='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-underground'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", At = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-general'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='7'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M35%2087h30M39%2087V48h22v39M39%2056H25v17h14M61%2056h14v17H61'/%3e%3cpath%20d='M34%2048h32l-5-15H39zM44%2033v-9h12v9'/%3e%3ccircle%20cx='25'%20cy='64'%20r='5'%20fill='currentColor'/%3e%3ccircle%20cx='75'%20cy='64'%20r='5'%20fill='currentColor'/%3e%3c/g%3e%3cpath%20d='M50%2058c-7%209-10%2014-10%2019a10%2010%200%200%200%2020%200c0-5-3-10-10-19z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-general'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Ft = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e公安资源点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:公安;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-police'%20viewBox='0%200%20100%20100'%3e%3cpath%20d='M50%2014l32%2011v23c0%2021-13%2034-32%2041-19-7-32-20-32-41V25z'%20fill='none'%20stroke='currentColor'%20stroke-width='7'%20stroke-linejoin='round'/%3e%3cpath%20d='M50%2030l5.5%2011.2%2012.4%201.8-9%208.8%202.1%2012.4L50%2058.4l-11%205.8%202.1-12.4-9-8.8%2012.4-1.8z'%20fill='%23F8FAFC'/%3e%3cpath%20d='M35%2073h30'%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%235B7CFF'%3e%3cuse%20href='%23icon-police'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", K = {
1728
- OutdoorFireHydrant: At,
1729
- UndergroundHydrant: Nt,
1730
- AboveGroundHydrant: Rt,
1731
- MunicipalFireHydrants: Et,
1732
- FireWaterReservoir: kt,
1733
- NaturalWater: It,
1734
- HospitalResourcePoint: Pt,
1735
- PublicSecurityResourcePoint: Ft,
1736
- SupportMaterialPoint: Ct,
1737
- FireStation: Tt,
1738
- LinkageUnit: xt
1739
- }, mr = Object.freeze(
1740
- Object.keys(K)
1909
+ v.DEG2RAD;
1910
+ v.DEG2RAD;
1911
+ const Jt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e联动单位%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:联动;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-linkage'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20fill='none'%3e%3cpath%20d='M50%2050L22%2024M50%2050l28-26M50%2050L20%2076M50%2050l30%2026'/%3e%3ccircle%20cx='50'%20cy='50'%20r='13'%20fill='currentColor'/%3e%3ccircle%20cx='22'%20cy='24'%20r='10'/%3e%3ccircle%20cx='78'%20cy='24'%20r='10'/%3e%3ccircle%20cx='20'%20cy='76'%20r='10'/%3e%3ccircle%20cx='80'%20cy='76'%20r='10'/%3e%3c/g%3e%3cpath%20d='M44%2050l4%204%209-10'%20fill='none'%20stroke='%23F8FAFC'%20stroke-width='5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23B67CFF'%3e%3cuse%20href='%23icon-linkage'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", $t = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e保障物资点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:物资;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-supplies'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M18%2035l32-16%2032%2016v44L50%2092%2018%2079zM18%2035l32%2017%2032-17M50%2052v40'/%3e%3cpath%20d='M34%2027l32%2017'/%3e%3c/g%3e%3cpath%20d='M41%2058h18v8h-18zM46%2053h8v18h-8z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FFAD33'%3e%3cuse%20href='%23icon-supplies'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", jt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e消防站%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防站;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-fire-station'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M13%2088h74M20%2088V39l30-22%2030%2022v49M31%2088V60h38v28M41%2088V70h18v18'/%3e%3cpath%20d='M20%2041h60'/%3e%3c/g%3e%3cpath%20d='M50%2029c-9%2010-12%2016-9%2022%202%204%205%206%209%206s8-2%2010-6c3-6%200-12-10-22z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF6B2C'%3e%3cuse%20href='%23icon-fire-station'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Ht = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e消防水池%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:水源;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-fire-pool'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M16%2039h68v43H16zM25%2055c6-5%2012-5%2018%200s12%205%2018%200%2012-5%2018%200M25%2068c6-5%2012-5%2018%200s12%205%2018%200%2012-5%2018%200'/%3e%3cpath%20d='M67%2021v28M77%2021v28M67%2029h10M67%2039h10'/%3e%3c/g%3e%3cpath%20d='M28%2025h25l-6%207H28z'%20fill='currentColor'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2338BDF8'%3e%3cuse%20href='%23icon-fire-pool'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Yt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e医院资源点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:医疗;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hospital'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M18%2087V29h64v58M10%2087h80M29%2087V72h14v15M57%2087V72h14v15'/%3e%3cpath%20d='M50%2038v22M39%2049h22'%20stroke='%23F8FAFC'%20stroke-width='9'/%3e%3c/g%3e%3cpath%20d='M27%2022h46v12H27z'%20fill='currentColor'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2322D3EE'%3e%3cuse%20href='%23icon-hospital'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Qt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e市政消火栓%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-municipal'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M10%2086h80M18%2086V48h18v38M64%2086V35h20v51M21%2057h4M29%2057h4M21%2068h4M29%2068h4M69%2046h4M77%2046h4M69%2058h4M77%2058h4'%20opacity='0.7'/%3e%3cpath%20d='M42%2086V60h18v26M39%2060h24l-4-11H43zM46%2049v-7h10v7'/%3e%3cpath%20d='M42%2067h-8v12h8M60%2067h8v12h-8'/%3e%3c/g%3e%3ccircle%20cx='51'%20cy='72'%20r='5'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-municipal'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Vt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e天然水源%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:水源;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-natural-water'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M14%2050l20-24%2014%2016%2011-12%2027%2029'/%3e%3cpath%20d='M15%2064c8-6%2015-6%2023%200s15%206%2023%200%2015-6%2024%200M15%2078c8-6%2015-6%2023%200s15%206%2023%200%2015-6%2024%200'/%3e%3c/g%3e%3ccircle%20cx='72'%20cy='23'%20r='8'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2338BDF8'%3e%3cuse%20href='%23icon-natural-water'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Xt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓(地上式)%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-ground'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='7'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M12%2084h76M38%2084V45h24v39M38%2057H24v16h14M62%2057h14v16H62'/%3e%3cpath%20d='M33%2045h34l-5-16H38zM44%2029v-8h12v8'/%3e%3ccircle%20cx='24'%20cy='65'%20r='5'%20fill='currentColor'/%3e%3ccircle%20cx='76'%20cy='65'%20r='5'%20fill='currentColor'/%3e%3c/g%3e%3cpath%20d='M50%2055l7%2012H43z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-ground'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", qt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓(地下式)%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-underground'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M12%2040h76'/%3e%3cellipse%20cx='50'%20cy='39'%20rx='22'%20ry='9'%20fill='currentColor'/%3e%3cpath%20d='M35%2045v30h30V45M42%2075v12M58%2075v12M31%2087h38'/%3e%3cpath%20d='M43%2054h14M50%2047v18'%20stroke='%23F8FAFC'/%3e%3c/g%3e%3cpath%20d='M25%2028l-7-8M75%2028l7-8'%20stroke='currentColor'%20stroke-width='5'%20stroke-linecap='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-underground'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Zt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-general'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='7'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M35%2087h30M39%2087V48h22v39M39%2056H25v17h14M61%2056h14v17H61'/%3e%3cpath%20d='M34%2048h32l-5-15H39zM44%2033v-9h12v9'/%3e%3ccircle%20cx='25'%20cy='64'%20r='5'%20fill='currentColor'/%3e%3ccircle%20cx='75'%20cy='64'%20r='5'%20fill='currentColor'/%3e%3c/g%3e%3cpath%20d='M50%2058c-7%209-10%2014-10%2019a10%2010%200%200%200%2020%200c0-5-3-10-10-19z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-general'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Kt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e公安资源点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:公安;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-police'%20viewBox='0%200%20100%20100'%3e%3cpath%20d='M50%2014l32%2011v23c0%2021-13%2034-32%2041-19-7-32-20-32-41V25z'%20fill='none'%20stroke='currentColor'%20stroke-width='7'%20stroke-linejoin='round'/%3e%3cpath%20d='M50%2030l5.5%2011.2%2012.4%201.8-9%208.8%202.1%2012.4L50%2058.4l-11%205.8%202.1-12.4-9-8.8%2012.4-1.8z'%20fill='%23F8FAFC'/%3e%3cpath%20d='M35%2073h30'%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%235B7CFF'%3e%3cuse%20href='%23icon-police'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", ne = {
1912
+ OutdoorFireHydrant: Zt,
1913
+ UndergroundHydrant: qt,
1914
+ AboveGroundHydrant: Xt,
1915
+ MunicipalFireHydrants: Qt,
1916
+ FireWaterReservoir: Ht,
1917
+ NaturalWater: Vt,
1918
+ HospitalResourcePoint: Yt,
1919
+ PublicSecurityResourcePoint: Kt,
1920
+ SupportMaterialPoint: $t,
1921
+ FireStation: jt,
1922
+ LinkageUnit: Jt
1923
+ }, Dr = Object.freeze(
1924
+ Object.keys(ne)
1741
1925
  );
1742
- function Lt(s) {
1926
+ function er(s) {
1743
1927
  const e = s?.trim();
1744
1928
  return !e || !Object.prototype.hasOwnProperty.call(
1745
- K,
1929
+ ne,
1746
1930
  e
1747
- ) ? null : K[e];
1931
+ ) ? null : ne[e];
1748
1932
  }
1749
- function Dt(s) {
1750
- return s.imageUrl?.trim() || Lt(s.ontologyId);
1933
+ function Re(s) {
1934
+ return s.imageUrl?.trim() || er(s.ontologyId);
1751
1935
  }
1752
- new g();
1753
- function we(s) {
1754
- return s instanceof L || s instanceof N ? s.group : s.classification.group;
1936
+ new f();
1937
+ function Pe(s) {
1938
+ return s instanceof J || s instanceof B ? s.group : s.classification.group;
1755
1939
  }
1756
- function Gt(s) {
1940
+ function tr(s) {
1757
1941
  const e = s.options, t = JSON.stringify(e.points ?? []);
1758
1942
  switch (s.category) {
1759
1943
  case "circle":
@@ -1772,27 +1956,27 @@ function Gt(s) {
1772
1956
  return `${s.category}|${t}`;
1773
1957
  }
1774
1958
  }
1775
- function _e(s, e = "solid") {
1959
+ function Ee(s, e = "solid") {
1776
1960
  return s === "unfilledArrow" ? "open" : s === "filledArrow" ? "solid" : e;
1777
1961
  }
1778
- function Bt(s) {
1962
+ function rr(s) {
1779
1963
  if (s.showArrow === !1) return "none";
1780
1964
  const e = s.startArrowStyle !== void 0 && s.startArrowStyle !== null, t = s.endArrowStyle !== void 0 && s.endArrowStyle !== null;
1781
1965
  return e && t ? "both" : t ? "right" : e ? "left" : "none";
1782
1966
  }
1783
- function Me(s) {
1784
- const e = Bt(s), t = _e(s.startArrowStyle), r = _e(s.endArrowStyle);
1967
+ function Ie(s) {
1968
+ const e = rr(s), t = Ee(s.startArrowStyle), r = Ee(s.endArrowStyle);
1785
1969
  return {
1786
1970
  arrowMode: e,
1787
1971
  startArrowStyle: t,
1788
1972
  endArrowStyle: r
1789
1973
  };
1790
1974
  }
1791
- function Ut(s, e) {
1975
+ function ir(s, e) {
1792
1976
  const t = s.options;
1793
1977
  return `${t.strokeColor}|${t.strokeWidth}|${t.strokeOpacity}|${t.fillColor}|${t.fillOpacity}|${e}|${t.fontColor ?? ""}|${t.fontSize ?? ""}`;
1794
1978
  }
1795
- class Wt {
1979
+ class sr {
1796
1980
  /** 标绘 id → 渲染记录 */
1797
1981
  _entries = /* @__PURE__ */ new Map();
1798
1982
  /** 由 GroundDecalManager 写入的标绘集合(引用共享) */
@@ -1804,6 +1988,8 @@ class Wt {
1804
1988
  /** 图片资源异步就绪后请求宿主刷新;按 URL 去重监听 */
1805
1989
  _requestRender;
1806
1990
  _watchedImageUrls = /* @__PURE__ */ new Set();
1991
+ _imageObjectURLs = /* @__PURE__ */ new Map();
1992
+ _imageRequests = /* @__PURE__ */ new Set();
1807
1993
  /** 已释放标记 */
1808
1994
  _disposed = !1;
1809
1995
  constructor(e) {
@@ -1835,31 +2021,41 @@ class Wt {
1835
2021
  */
1836
2022
  redraw() {
1837
2023
  if (this._disposed) return;
1838
- for (const [t, r] of this._entries)
1839
- this._shapes.has(t) || (this._scene.remove(r.group), r.primitive.dispose(), this._entries.delete(t));
2024
+ for (const [r, i] of this._entries)
2025
+ this._shapes.has(r) || (this._scene.remove(i.group), i.primitive.dispose(), this._entries.delete(r));
1840
2026
  let e = 0;
1841
- for (const [t, r] of this._shapes) {
1842
- const i = yt(e);
2027
+ for (const [r, i] of this._shapes) {
2028
+ const n = At(e);
1843
2029
  e += 1;
1844
- const n = this._entries.get(t), o = Gt(r), l = Ut(r, this._opacity);
1845
- if (n !== void 0 && n.signature === o && (this._supportsStyleHotUpdate(n) || n.styleSignature === l)) {
1846
- this._refreshLightweight(n, i), n.styleSignature = l;
2030
+ const o = this._entries.get(r), a = tr(i), h = ir(i, this._opacity);
2031
+ if (o !== void 0 && o.signature === a && (this._supportsStyleHotUpdate(o) || o.styleSignature === h)) {
2032
+ this._refreshLightweight(o, n), o.styleSignature = h;
1847
2033
  continue;
1848
2034
  }
1849
- n !== void 0 && (this._scene.remove(n.group), n.primitive.dispose(), this._entries.delete(t));
1850
- const h = this._buildPrimitive(r, i);
1851
- if (h === null) continue;
1852
- const c = we(h);
1853
- c.visible = r.options.visible !== !1, this._scene.add(c);
1854
- const d = {
1855
- plot: r,
1856
- primitive: h,
1857
- group: c,
1858
- signature: o,
1859
- styleSignature: l
2035
+ o !== void 0 && (this._scene.remove(o.group), o.primitive.dispose(), this._entries.delete(r));
2036
+ const c = this._buildPrimitive(i, n);
2037
+ if (c === null) continue;
2038
+ const d = Pe(c);
2039
+ d.visible = i.options.visible !== !1, this._scene.add(d);
2040
+ const g = {
2041
+ plot: i,
2042
+ primitive: c,
2043
+ group: d,
2044
+ signature: a,
2045
+ styleSignature: h
1860
2046
  };
1861
- this._entries.set(t, d), h instanceof N && this._refreshLightweight(d, i);
2047
+ this._entries.set(r, g), c instanceof B && this._refreshLightweight(g, n);
2048
+ }
2049
+ const t = /* @__PURE__ */ new Set();
2050
+ for (const r of this._shapes.values()) {
2051
+ const i = r.options;
2052
+ if (r.category === "point" && i.pointStyle === "image") {
2053
+ const n = Re(i);
2054
+ n && t.add(n.trim());
2055
+ }
1862
2056
  }
2057
+ for (const [r, i] of this._imageObjectURLs)
2058
+ t.has(r) || (i.startsWith("blob:") && URL.revokeObjectURL(i), this._imageObjectURLs.delete(r));
1863
2059
  }
1864
2060
  /**
1865
2061
  * 宿主每帧调用:把 frameState 透传给所有图元(深度 + 视口 + 相机 + pixelRatio)。
@@ -1874,7 +2070,9 @@ class Wt {
1874
2070
  if (!this._disposed) {
1875
2071
  for (const e of this._entries.values())
1876
2072
  this._scene.remove(e.group), e.primitive.dispose();
1877
- this._entries.clear(), this._disposed = !0;
2073
+ this._entries.clear(), this._disposed = !0, this._imageRequests.forEach((e) => e.abort()), this._imageRequests.clear(), this._imageObjectURLs.forEach((e) => {
2074
+ e.startsWith("blob:") && URL.revokeObjectURL(e);
2075
+ }), this._imageObjectURLs.clear();
1878
2076
  }
1879
2077
  }
1880
2078
  // ── 内部:轻量刷新 / 样式热更新支持判定 ──
@@ -1884,7 +2082,7 @@ class Wt {
1884
2082
  */
1885
2083
  _supportsStyleHotUpdate(e) {
1886
2084
  const { primitive: t, plot: r } = e;
1887
- return t instanceof L || t instanceof N || t instanceof F && r.options.pointStyle === "image";
2085
+ return t instanceof J || t instanceof B || t instanceof z && r.options.pointStyle === "image";
1888
2086
  }
1889
2087
  /**
1890
2088
  * 几何未变时的轻量刷新:
@@ -1893,25 +2091,25 @@ class Wt {
1893
2091
  * - 文字:setText(内容 + 颜色 + 不透明度)/ setVisible(不重建图元)。
1894
2092
  */
1895
2093
  _refreshLightweight(e, t) {
1896
- if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof L) {
2094
+ if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof J) {
1897
2095
  const r = e.plot.options, {
1898
2096
  startArrowStyle: i,
1899
2097
  endArrowStyle: n
1900
- } = Me(r);
2098
+ } = Ie(r);
1901
2099
  e.primitive.setColor(
1902
2100
  r.strokeColor,
1903
2101
  (r.strokeOpacity ?? 100) * this._opacity
1904
2102
  );
1905
2103
  const o = typeof r.strokeWidth == "number" && r.strokeWidth > 0 ? r.strokeWidth : 5;
1906
2104
  e.primitive.setWidth(o), e.primitive.setArrowStyles(i, n);
1907
- const l = Math.max(o * 4, 1), h = Math.max(o * 3, 0.8);
1908
- e.primitive.setArrowSizeMeters(l, h), e.primitive.setVisible(r.visible !== !1);
2105
+ const a = Math.max(o * 4, 1), h = Math.max(o * 3, 0.8);
2106
+ e.primitive.setArrowSizeMeters(a, h), e.primitive.setVisible(r.visible !== !1);
1909
2107
  }
1910
- if (e.primitive instanceof F) {
2108
+ if (e.primitive instanceof z) {
1911
2109
  const r = e.plot.options;
1912
2110
  r.pointStyle === "image" && e.primitive.setImageOpacity((r.fillOpacity ?? 100) * this._opacity);
1913
2111
  }
1914
- if (e.primitive instanceof N) {
2112
+ if (e.primitive instanceof B) {
1915
2113
  const r = e.plot.options;
1916
2114
  e.primitive.setText({
1917
2115
  content: r.content,
@@ -1935,7 +2133,7 @@ class Wt {
1935
2133
  offsetEastMeters: r.offsetX,
1936
2134
  offsetNorthMeters: r.offsetY,
1937
2135
  metersPerPixel: r.scale
1938
- }), e.primitive.setVisible(r.visible !== !1), e.group = we(e.primitive), e.group.visible = r.visible !== !1;
2136
+ }), e.primitive.setVisible(r.visible !== !1), e.group = Pe(e.primitive), e.group.visible = r.visible !== !1;
1939
2137
  }
1940
2138
  }
1941
2139
  // ── 内部:按 category 构建图元 ──
@@ -1946,17 +2144,20 @@ class Wt {
1946
2144
  * @returns 渲染图元;未知类型 / 退化情况返回 null。
1947
2145
  */
1948
2146
  _buildPrimitive(e, t) {
1949
- const r = e.options, i = r.points ?? [], n = this._opacity, o = (r.strokeOpacity ?? 100) * n, l = (r.fillOpacity ?? 100) * n, h = r.visible !== !1;
2147
+ const r = e.options, i = r.points ?? [], n = this._opacity, o = (r.strokeOpacity ?? 100) * n, a = (r.fillOpacity ?? 100) * n, h = r.visible !== !1;
1950
2148
  switch (e.category) {
1951
2149
  case "point": {
1952
2150
  if (i.length === 0) return null;
1953
2151
  const c = r;
1954
2152
  if (c.pointStyle === "image") {
1955
- const d = Dt(c);
1956
- return d ? (this._watchImageTexture(d), new F({
2153
+ const d = Re(c);
2154
+ if (!d)
2155
+ return console.warn(`[soonspacejs] Unknown point image ontology id: ${c.ontologyId ?? ""}`), null;
2156
+ const g = this._watchImageTexture(d);
2157
+ return g ? new z({
1957
2158
  position: i[0],
1958
2159
  shape: "image",
1959
- imageUrl: d,
2160
+ imageUrl: g,
1960
2161
  imageWidth: c.imageWidth,
1961
2162
  imageHeight: c.imageHeight,
1962
2163
  rotation: c.rotation ?? 0,
@@ -1964,12 +2165,12 @@ class Wt {
1964
2165
  strokeWidth: c.strokeWidth ?? 0,
1965
2166
  strokeOpacity: o,
1966
2167
  fillColor: c.fillColor,
1967
- fillOpacity: l,
2168
+ fillOpacity: a,
1968
2169
  visible: h,
1969
2170
  renderOrder: t
1970
- })) : (console.warn(`[soonspacejs] Unknown point image ontology id: ${c.ontologyId ?? ""}`), null);
2171
+ }) : null;
1971
2172
  }
1972
- return new F({
2173
+ return new z({
1973
2174
  position: i[0],
1974
2175
  shape: c.pointStyle ?? "circle",
1975
2176
  size: c.size ?? 100,
@@ -1977,7 +2178,7 @@ class Wt {
1977
2178
  strokeWidth: c.strokeWidth ?? 0,
1978
2179
  strokeOpacity: o,
1979
2180
  fillColor: c.fillColor,
1980
- fillOpacity: l,
2181
+ fillOpacity: a,
1981
2182
  visible: h,
1982
2183
  renderOrder: t
1983
2184
  });
@@ -1985,14 +2186,14 @@ class Wt {
1985
2186
  case "circle": {
1986
2187
  if (i.length === 0) return null;
1987
2188
  const c = r;
1988
- return new ge({
2189
+ return new Me({
1989
2190
  center: i[0],
1990
2191
  radius: c.radius ?? 100,
1991
2192
  strokeColor: c.strokeColor,
1992
2193
  strokeWidth: c.strokeWidth ?? 0,
1993
2194
  strokeOpacity: o,
1994
2195
  fillColor: c.fillColor,
1995
- fillOpacity: l,
2196
+ fillOpacity: a,
1996
2197
  visible: h,
1997
2198
  renderOrder: t
1998
2199
  });
@@ -2000,14 +2201,14 @@ class Wt {
2000
2201
  case "sector": {
2001
2202
  if (i.length === 0) return null;
2002
2203
  const c = r;
2003
- return new ge({
2204
+ return new Me({
2004
2205
  center: i[0],
2005
2206
  radius: c.radius ?? 100,
2006
2207
  strokeColor: c.strokeColor,
2007
2208
  strokeWidth: c.strokeWidth ?? 0,
2008
2209
  strokeOpacity: o,
2009
2210
  fillColor: c.fillColor,
2010
- fillOpacity: l,
2211
+ fillOpacity: a,
2011
2212
  visible: h,
2012
2213
  sectorStartDegrees: c.startAngle ?? 0,
2013
2214
  sectorAngleDegrees: c.sectorAngle ?? 360,
@@ -2016,13 +2217,13 @@ class Wt {
2016
2217
  }
2017
2218
  case "polygon":
2018
2219
  case "rectangle":
2019
- return i.length < 3 ? null : new ue({
2220
+ return i.length < 3 ? null : new _e({
2020
2221
  points: i,
2021
2222
  strokeColor: r.strokeColor,
2022
2223
  strokeWidth: r.strokeWidth ?? 0,
2023
2224
  strokeOpacity: o,
2024
2225
  fillColor: r.fillColor,
2025
- fillOpacity: l,
2226
+ fillOpacity: a,
2026
2227
  visible: h,
2027
2228
  renderOrder: t
2028
2229
  });
@@ -2030,13 +2231,13 @@ class Wt {
2030
2231
  const c = e.generateCoords();
2031
2232
  if (c.length < 3) return null;
2032
2233
  const d = r;
2033
- return new ue({
2234
+ return new _e({
2034
2235
  points: c,
2035
2236
  strokeColor: d.strokeColor,
2036
2237
  strokeWidth: d.strokeWidth ?? 0,
2037
2238
  strokeOpacity: o,
2038
2239
  fillColor: d.fillColor,
2039
- fillOpacity: l,
2240
+ fillOpacity: a,
2040
2241
  visible: h,
2041
2242
  renderOrder: t
2042
2243
  });
@@ -2045,38 +2246,38 @@ class Wt {
2045
2246
  if (i.length < 2) return null;
2046
2247
  const c = r, {
2047
2248
  arrowMode: d,
2048
- startArrowStyle: f,
2049
- endArrowStyle: v
2050
- } = Me(c), M = c.strokeStyle === "dashed", y = M ? 60 : void 0, m = M ? 40 : void 0, w = typeof c.strokeWidth == "number" && c.strokeWidth > 0 ? c.strokeWidth : 5, T = Math.max(w * 4, 1), k = Math.max(w * 3, 0.8);
2051
- return new L({
2249
+ startArrowStyle: g,
2250
+ endArrowStyle: p
2251
+ } = Ie(c), m = c.strokeStyle === "dashed", _ = m ? 60 : void 0, y = m ? 40 : void 0, O = typeof c.strokeWidth == "number" && c.strokeWidth > 0 ? c.strokeWidth : 5, b = Math.max(O * 4, 1), S = Math.max(O * 3, 0.8);
2252
+ return new J({
2052
2253
  points: i,
2053
2254
  strokeColor: c.strokeColor,
2054
2255
  strokeOpacity: o,
2055
2256
  widthMode: "world",
2056
- widthMeters: w,
2257
+ widthMeters: O,
2057
2258
  visible: h,
2058
2259
  arrowMode: d,
2059
- arrowStyle: f,
2060
- startArrowStyle: f,
2061
- endArrowStyle: v,
2260
+ arrowStyle: g,
2261
+ startArrowStyle: g,
2262
+ endArrowStyle: p,
2062
2263
  arrowWidthMode: "world",
2063
- arrowLengthMeters: T,
2064
- arrowWidthMeters: k,
2065
- dashLengthMeters: y,
2066
- gapLengthMeters: m,
2264
+ arrowLengthMeters: b,
2265
+ arrowWidthMeters: S,
2266
+ dashLengthMeters: _,
2267
+ gapLengthMeters: y,
2067
2268
  renderOrder: t
2068
2269
  });
2069
2270
  }
2070
2271
  case "text": {
2071
2272
  if (i.length === 0) return null;
2072
2273
  const c = r;
2073
- return new N({
2274
+ return new B({
2074
2275
  points: [i[0]],
2075
2276
  content: c.content,
2076
2277
  fontColor: c.fontColor,
2077
2278
  fontSize: c.fontSize,
2078
2279
  fillColor: c.fillColor,
2079
- fillOpacity: l,
2280
+ fillOpacity: a,
2080
2281
  strokeColor: c.strokeColor,
2081
2282
  strokeOpacity: o,
2082
2283
  strokeWidth: c.strokeWidth ?? 0,
@@ -2106,24 +2307,33 @@ class Wt {
2106
2307
  /**
2107
2308
  * 贴地图元依赖异步 TextureLoader,而 SoonSpace 默认按需渲染;
2108
2309
  * 图片解码完成后若没有新的渲染请求,纹理会等到相机交互才首次显示。
2109
- * 用原生 Image 监听资源就绪并通知宿主,按 URL 去重避免重复监听。
2310
+ * 下载后交付 Blob URL,避免外库 TextureLoader 再发起无头 HTTP 请求。
2311
+ * 解码完成后继续补两帧通知,保持按需渲染下的首次显示。
2110
2312
  */
2111
2313
  _watchImageTexture(e) {
2112
- const t = e.trim();
2113
- if (t.length === 0 || this._watchedImageUrls.has(t) || typeof Image > "u") return;
2314
+ const t = e.trim(), r = this._imageObjectURLs.get(t);
2315
+ if (r) return r;
2316
+ if (t.length === 0 || this._watchedImageUrls.has(t) || typeof Image > "u") return null;
2114
2317
  this._watchedImageUrls.add(t);
2115
- const r = new Image();
2116
- r.crossOrigin = "anonymous";
2117
2318
  let i = !1;
2118
2319
  const n = () => {
2119
- i || (i = !0, this._watchedImageUrls.delete(t), r.onload = null, r.onerror = null, !this._disposed && (this._requestRender?.(), requestAnimationFrame(() => {
2320
+ i || (i = !0, this._watchedImageUrls.delete(t), !this._disposed && (this.redraw(), this._requestRender?.(), requestAnimationFrame(() => {
2120
2321
  this._disposed || this._requestRender?.();
2121
2322
  })));
2122
- };
2123
- r.onload = n, r.onerror = n, r.src = t, r.complete && queueMicrotask(n);
2124
- }
2125
- }
2126
- class zt {
2323
+ }, o = new AbortController();
2324
+ return this._imageRequests.add(o), w.utils.fetchResource(t, { signal: o.signal }).then((a) => {
2325
+ if (!a.ok) throw new Error(`Failed to load point image: ${a.status}`);
2326
+ return a.blob();
2327
+ }).then((a) => {
2328
+ if (this._disposed) return;
2329
+ const h = URL.createObjectURL(a);
2330
+ this._imageObjectURLs.set(t, h), w.utils.createImageLoader().load(h, n, void 0, n);
2331
+ }).catch(() => {
2332
+ this._disposed || (this._imageObjectURLs.set(t, "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"), n());
2333
+ }).finally(() => this._imageRequests.delete(o)), null;
2334
+ }
2335
+ }
2336
+ class nr {
2127
2337
  /** 标绘 id → 实例;与桥接器的 shapes 共用同一引用 */
2128
2338
  _items = /* @__PURE__ */ new Map();
2129
2339
  /** 标绘管理器 id(对外常量,保持与参考项目一致) */
@@ -2139,7 +2349,7 @@ class zt {
2139
2349
  /** 由 TerrainTilesRenderer 提供的场景包围盒计算器。 */
2140
2350
  _boundingBoxResolver;
2141
2351
  constructor(e) {
2142
- this.ssp = e.ssp, this._boundingBoxResolver = e.boundingBoxResolver, this._bridge = new Wt({
2352
+ this.ssp = e.ssp, this._boundingBoxResolver = e.boundingBoxResolver, this._bridge = new sr({
2143
2353
  scene: e.ssp.viewport.scene,
2144
2354
  requestRender: () => this.ssp.render()
2145
2355
  });
@@ -2175,42 +2385,42 @@ class zt {
2175
2385
  switch (e.type) {
2176
2386
  case "point": {
2177
2387
  const { type: r, ...i } = e;
2178
- t = new it(i);
2388
+ t = new Mt(i);
2179
2389
  break;
2180
2390
  }
2181
2391
  case "line": {
2182
2392
  const { type: r, ...i } = e;
2183
- t = new st(i);
2393
+ t = new Ot(i);
2184
2394
  break;
2185
2395
  }
2186
2396
  case "polygon": {
2187
2397
  const { type: r, ...i } = e;
2188
- t = new nt(i);
2398
+ t = new St(i);
2189
2399
  break;
2190
2400
  }
2191
2401
  case "rectangle": {
2192
2402
  const { type: r, ...i } = e;
2193
- t = new ot(i);
2403
+ t = new bt(i);
2194
2404
  break;
2195
2405
  }
2196
2406
  case "circle": {
2197
2407
  const { type: r, ...i } = e;
2198
- t = new ut(i);
2408
+ t = new Pt(i);
2199
2409
  break;
2200
2410
  }
2201
2411
  case "sector": {
2202
2412
  const { type: r, ...i } = e;
2203
- t = new lt(i);
2413
+ t = new xt(i);
2204
2414
  break;
2205
2415
  }
2206
2416
  case "text": {
2207
2417
  const { type: r, ...i } = e;
2208
- t = new ht(i);
2418
+ t = new kt(i);
2209
2419
  break;
2210
2420
  }
2211
2421
  case "arrow": {
2212
2422
  const { type: r, ...i } = e;
2213
- t = new ct(i);
2423
+ t = new Ct(i);
2214
2424
  break;
2215
2425
  }
2216
2426
  default:
@@ -2344,9 +2554,9 @@ class zt {
2344
2554
  if (!i || !i.options.points || i.options.points.length === 0)
2345
2555
  return -1;
2346
2556
  let n = 0, o = 1 / 0;
2347
- for (let l = 0; l < i.options.points.length; l++) {
2348
- const h = i.options.points[l][0] - t, c = i.options.points[l][1] - r, d = h * h + c * c;
2349
- d < o && (o = d, n = l);
2557
+ for (let a = 0; a < i.options.points.length; a++) {
2558
+ const h = i.options.points[a][0] - t, c = i.options.points[a][1] - r, d = h * h + c * c;
2559
+ d < o && (o = d, n = a);
2350
2560
  }
2351
2561
  return n;
2352
2562
  }
@@ -2381,90 +2591,90 @@ class zt {
2381
2591
  }));
2382
2592
  }
2383
2593
  }
2384
- const Oe = 5e4, Jt = 10, $t = 10, jt = 10, Ht = 12, Qt = "文本内容";
2385
- function Yt(s, e) {
2386
- const { group: t, ellipsoid: r } = s.tiles, i = p.degToRad(e[1]), n = p.degToRad(e[0]), o = new a();
2594
+ const Le = 5e4, or = 10, ar = 10, lr = 10, cr = 12, hr = "文本内容";
2595
+ function dr(s, e) {
2596
+ const { group: t, ellipsoid: r } = s.tiles, i = v.degToRad(e[1]), n = v.degToRad(e[0]), o = new l();
2387
2597
  r.getCartographicToPosition(
2388
2598
  i,
2389
2599
  n,
2390
- Oe,
2600
+ Le,
2391
2601
  o
2392
2602
  );
2393
- const l = new a();
2394
- r.getCartographicToNormal(i, n, l);
2395
- const h = o.applyMatrix4(t.matrixWorld), c = l.transformDirection(t.matrixWorld).negate().normalize();
2396
- return new Be(
2603
+ const a = new l();
2604
+ r.getCartographicToNormal(i, n, a);
2605
+ const h = o.applyMatrix4(t.matrixWorld), c = a.transformDirection(t.matrixWorld).negate().normalize();
2606
+ return new at(
2397
2607
  h,
2398
2608
  c,
2399
2609
  0,
2400
- Oe * 2
2610
+ Le * 2
2401
2611
  ).intersectObject(t, !0)[0]?.point.clone() ?? null;
2402
2612
  }
2403
- function Ae(s, e) {
2613
+ function Ye(s, e) {
2404
2614
  const t = [];
2405
2615
  s.tiles.group.updateMatrixWorld(!0);
2406
2616
  for (const r of e) {
2407
- const i = Yt(s, r);
2617
+ const i = dr(s, r);
2408
2618
  i && t.push(i);
2409
2619
  }
2410
2620
  return t;
2411
2621
  }
2412
- function Fe(s, e, t) {
2622
+ function Qe(s, e, t) {
2413
2623
  if (t.length === 0) return null;
2414
- const r = new te();
2624
+ const r = new de();
2415
2625
  if (t.forEach((i) => r.expandByPoint(i)), (s === "circle" || s === "sector") && typeof e.radius == "number" && r.expandByScalar(e.radius), s === "text") {
2416
- const i = e.fontSize ?? Ht, n = Math.max(
2417
- (e.content ?? Qt).length,
2626
+ const i = e.fontSize ?? cr, n = Math.max(
2627
+ (e.content ?? hr).length,
2418
2628
  1
2419
2629
  ), o = e.scale ?? 1;
2420
2630
  r.expandByScalar(i * n * o / 2);
2421
2631
  }
2422
2632
  if (s === "point") {
2423
2633
  const i = e.pointStyle === "image" ? Math.max(
2424
- e.imageWidth ?? $t,
2425
- e.imageHeight ?? jt
2426
- ) : e.size ?? Jt;
2634
+ e.imageWidth ?? ar,
2635
+ e.imageHeight ?? lr
2636
+ ) : e.size ?? or;
2427
2637
  r.expandByScalar(i / 2);
2428
2638
  }
2429
2639
  return r.isEmpty() ? null : r;
2430
2640
  }
2431
- function Xt(s, e) {
2432
- const t = e.options, r = e.category === "arrow" ? e.generateCoords() : t.points, i = Ae(
2641
+ function ur(s, e) {
2642
+ const t = e.options, r = e.category === "arrow" ? e.generateCoords() : t.points, i = Ye(
2433
2643
  s,
2434
2644
  Array.isArray(r) ? r : []
2435
2645
  );
2436
- return Fe(e.category, t, i);
2646
+ return Qe(e.category, t, i);
2437
2647
  }
2438
- function Vt(s, e, t = 200) {
2648
+ function gr(s, e, t = 200) {
2439
2649
  const r = s.groundDecalManager?.getItem(e);
2440
2650
  if (!r) return !1;
2441
- const i = r.options, n = r.type === "arrow" && "generatedCoords" in r && r.generatedCoords.length > 0 ? r.generatedCoords : i.points, o = Ae(
2651
+ const i = r.options, n = r.type === "arrow" && "generatedCoords" in r && r.generatedCoords.length > 0 ? r.generatedCoords : i.points, o = Ye(
2442
2652
  s,
2443
2653
  Array.isArray(n) ? n : []
2444
- ), l = Fe(r.type, i, o);
2445
- return l ? (globalThis.setTimeout(() => {
2446
- s.ssp.flyToObj(l, "frontTop");
2654
+ ), a = Qe(r.type, i, o);
2655
+ return a ? (globalThis.setTimeout(() => {
2656
+ s.ssp.flyToObj(a, "frontTop");
2447
2657
  }, Math.max(0, t)), !0) : !1;
2448
2658
  }
2449
- const qt = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/", Zt = "https://c.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png";
2450
- class vr {
2659
+ const pr = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/", fr = "https://c.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png";
2660
+ class Ur {
2451
2661
  constructor(e, t = {}) {
2452
2662
  this.ssp = e, this.options = t;
2453
- const r = t.baseUrl || qt;
2454
- if (this.resourceManager = new tt(), this.terrainManager = new rt(), t.imageryUrl !== !1) {
2455
- const i = t.imageryUrl || Zt;
2663
+ const r = t.baseUrl || pr;
2664
+ if (this.resourceManager = new vt(), this.terrainManager = new _t(), t.imageryUrl !== !1) {
2665
+ const i = t.imageryUrl || fr;
2456
2666
  this.resourceManager.addOverlay({
2457
2667
  id: this.defaultImageryId,
2458
2668
  type: u.XYZ,
2459
2669
  options: { id: this.defaultImageryId, url: i, type: u.XYZ }
2460
2670
  });
2461
2671
  }
2462
- this.groundDecalManager = new zt({
2672
+ this.groundDecalManager = new nr({
2463
2673
  ssp: this.ssp,
2464
- boundingBoxResolver: (i) => Xt(this, i)
2465
- }), Qe(), this._alphaClipMode = t.alphaClipMode ?? "alphaTest", this._currentTerrainConfig = {
2674
+ boundingBoxResolver: (i) => ur(this, i)
2675
+ }), ct(), this._alphaClipMode = t.alphaClipMode ?? "alphaTest", this._currentTerrainConfig = {
2466
2676
  id: this.defaultTerrainId,
2467
- type: C.QUANTIZED_MESH,
2677
+ type: L.QUANTIZED_MESH,
2468
2678
  url: r
2469
2679
  }, this.terrainManager.add(this._currentTerrainConfig), this.terrainManager.setCurrentId(this._currentTerrainConfig.id), this.tiles = this._initTilesRenderer(this._currentTerrainConfig), this._initPlugins(this.tiles, this._currentTerrainConfig);
2470
2680
  }
@@ -2483,9 +2693,9 @@ class vr {
2483
2693
  * 供 cesium-to-three 标绘图元的 RTE 着色器使用。标绘几何烘焙在绝对 ECEF,只有用
2484
2694
  * ECEF 相机投影才能与「重定向后地形」对齐,同时保持 reorientation 开启(地形不抖)。
2485
2695
  */
2486
- _plotVirtualCamera = new ce();
2487
- _reorientInverse = new g();
2488
- _virtualScale = new a();
2696
+ _plotVirtualCamera = new we();
2697
+ _reorientInverse = new f();
2698
+ _virtualScale = new l();
2489
2699
  /** 资源管理器(存储配置) */
2490
2700
  resourceManager;
2491
2701
  /** 地形管理器(记录地形列表) */
@@ -2506,7 +2716,7 @@ class vr {
2506
2716
  * 是否使用 Cesium Ion 地形
2507
2717
  */
2508
2718
  get isCesiumIon() {
2509
- return this._currentTerrainConfig.type === C.CESIUM_ION;
2719
+ return this._currentTerrainConfig.type === L.CESIUM_ION;
2510
2720
  }
2511
2721
  /**
2512
2722
  * 获取当前地形配置
@@ -2552,45 +2762,38 @@ class vr {
2552
2762
  this._alphaClipMode = e, this.customMaterialPlugin && (this.customMaterialPlugin.alphaClipMode = e), this._updateAlphaClipMode(), this.render();
2553
2763
  }
2554
2764
  _initTilesRenderer(e) {
2555
- return e.type === C.CESIUM_ION ? new E() : (
2765
+ return W(e.type === L.CESIUM_ION ? new D() : (
2556
2766
  // Cesium Ion 由插件设置 URL
2557
- new E(e.url)
2558
- );
2767
+ new D(e.url)
2768
+ ));
2559
2769
  }
2560
2770
  /**
2561
2771
  * 创建 TilesRenderer(统一方法,支持自定义地形和 Cesium Ion 地形)
2562
2772
  * @param config 地形配置
2563
2773
  */
2564
2774
  _initPlugins(e, t) {
2565
- if (this.tilesFadePlugin = new re({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new ie(), e.registerPlugin(this.tilesFadePlugin), e.registerPlugin(this.updateOnChangePlugin), t.type === C.CESIUM_ION ? e.registerPlugin(
2566
- new Pe({
2775
+ if (this.tilesFadePlugin = new le({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new ce(), e.registerPlugin(this.tilesFadePlugin), e.registerPlugin(this.updateOnChangePlugin), t.type === L.CESIUM_ION ? e.registerPlugin(
2776
+ new De({
2567
2777
  apiToken: t.apiToken,
2568
2778
  assetId: t.assetId || "1",
2569
2779
  autoRefreshToken: t.autoRefreshToken ?? !0,
2570
2780
  assetTypeHandler: (r, i) => {
2571
2781
  r === "TERRAIN" && i.getPluginByName("QUANTIZED_MESH_PLUGIN") === null && i.registerPlugin(
2572
- new Q({ useRecommendedSettings: !0 })
2782
+ new K({ useRecommendedSettings: !0 })
2573
2783
  );
2574
2784
  }
2575
2785
  })
2576
2786
  ) : (e.registerPlugin(
2577
- new Q({ useRecommendedSettings: !0 })
2578
- ), e.fetchData = async (r) => {
2579
- const i = { method: "GET", mode: "cors" };
2580
- if (/layer\.json$/.test(r)) {
2581
- const n = await fetch(r, i).then((o) => o.json());
2582
- return n.metadataAvailability = -1, new Response(JSON.stringify(n));
2583
- }
2584
- return fetch(r, i);
2585
- }), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new et(), this.customMaterialPlugin.alphaClipMode = this._alphaClipMode, e.registerPlugin(this.customMaterialPlugin)), this.imageOverlayPlugin = new Te({
2787
+ new K({ useRecommendedSettings: !0 })
2788
+ ), e.fetchData = $e), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new wt(), this.customMaterialPlugin.alphaClipMode = this._alphaClipMode, e.registerPlugin(this.customMaterialPlugin)), this.imageOverlayPlugin = new Ne({
2586
2789
  renderer: this.ssp.viewport.renderer,
2587
2790
  overlays: []
2588
- }), e.registerPlugin(this.imageOverlayPlugin), this._ensureGlobeDepth(), this.overlayManager = new B(
2791
+ }), e.registerPlugin(this.imageOverlayPlugin), this._ensureGlobeDepth(), this.overlayManager = new j(
2589
2792
  this.imageOverlayPlugin,
2590
2793
  this.resourceManager
2591
2794
  ), this.overlayManager.restoreFromResourceManager(), this.options.reorientation !== !1) {
2592
2795
  const r = this.options.reorientation || { lon: 120, lat: 30 };
2593
- this.reorientationPlugin = new se({
2796
+ this.reorientationPlugin = new he({
2594
2797
  lon: r.lon,
2595
2798
  lat: r.lat,
2596
2799
  height: r.height ?? 0.1
@@ -2646,7 +2849,7 @@ class vr {
2646
2849
  setTerrain(e, t = void 0) {
2647
2850
  if (this.groundDecalManager?.invalidateBoundingBoxes(), t && (this.options = { ...this.options, ...t }), this.terrainManager.has(e.id) || this.terrainManager.add(e), this.terrainManager.setCurrentId(e.id), this.terrainManager.currentId === e.id) {
2648
2851
  const r = this.terrainManager.getCurrent();
2649
- e.type === C.QUANTIZED_MESH && r?.type === C.QUANTIZED_MESH && (r.url = e.url);
2852
+ e.type === L.QUANTIZED_MESH && r?.type === L.QUANTIZED_MESH && (r.url = e.url);
2650
2853
  }
2651
2854
  this._disposeTilesRenderer(), this._currentTerrainConfig = e, this.tiles = this._initTilesRenderer(e), this._initPlugins(this.tiles, e), this._enabled && this.ssp.addObject(this.tiles.group), this.render();
2652
2855
  }
@@ -2659,7 +2862,7 @@ class vr {
2659
2862
  * @returns true 表示已安排飞向;false 表示标绘或当前地形坐标不可用。
2660
2863
  */
2661
2864
  flyToPlotById(e, t = 200) {
2662
- return Vt(this, e, t);
2865
+ return gr(this, e, t);
2663
2866
  }
2664
2867
  // =============== Overlay 快捷方法 ===============
2665
2868
  /**
@@ -2827,15 +3030,15 @@ class vr {
2827
3030
  };
2828
3031
  beforeRenderHandler = () => {
2829
3032
  const { camera: e, renderer: t, scene: r } = this.ssp.viewport;
2830
- if (e.updateMatrixWorld(), this.tiles.setCamera(e), this.tiles.setResolutionFromRenderer(e, t), this.tiles.update(), this.groundDecalManager && e instanceof ce) {
3033
+ if (e.updateMatrixWorld(), this.tiles.setCamera(e), this.tiles.setResolutionFromRenderer(e, t), this.tiles.update(), this.groundDecalManager && e instanceof we) {
2831
3034
  const i = this._ensureGlobeDepth(), n = t.domElement.width, o = t.domElement.height;
2832
- (i.target.width !== n || i.target.height !== o) && i.resize(n, o), Ye(e.near, e.far), i.render(t, e, r, this.tiles.group);
2833
- const l = this._buildPlotVirtualCamera(e);
3035
+ (i.target.width !== n || i.target.height !== o) && i.resize(n, o), ht(e.near, e.far), i.render(t, e, r, this.tiles.group);
3036
+ const a = this._buildPlotVirtualCamera(e);
2834
3037
  this.groundDecalManager.update({
2835
3038
  depthTexture: i.target.texture,
2836
3039
  width: n,
2837
3040
  height: o,
2838
- camera: l,
3041
+ camera: a,
2839
3042
  pixelRatio: t.getPixelRatio()
2840
3043
  });
2841
3044
  }
@@ -2866,7 +3069,7 @@ class vr {
2866
3069
  _ensureGlobeDepth() {
2867
3070
  if (!this._globeDepth) {
2868
3071
  const { renderer: e } = this.ssp.viewport;
2869
- this._globeDepth = new Xe(
3072
+ this._globeDepth = new dt(
2870
3073
  e.domElement.width,
2871
3074
  e.domElement.height
2872
3075
  );
@@ -2874,7 +3077,7 @@ class vr {
2874
3077
  return this._globeDepth;
2875
3078
  }
2876
3079
  enable() {
2877
- this._enabled = !0, this.ssp.viewport.camera.layers.enable(Ve), this.ssp.addObject(this.tiles.group), this.ssp.signals.beforeRender.add(this.beforeRenderHandler);
3080
+ this._enabled = !0, this.ssp.viewport.camera.layers.enable(ut), this.ssp.addObject(this.tiles.group), this.ssp.signals.beforeRender.add(this.beforeRenderHandler);
2878
3081
  }
2879
3082
  disable() {
2880
3083
  this._enabled = !1, this.ssp.removeObject(this.tiles.group), this.ssp.signals.beforeRender.remove(this.beforeRenderHandler);
@@ -2892,8 +3095,8 @@ class vr {
2892
3095
  height: r
2893
3096
  };
2894
3097
  const n = () => {
2895
- const l = p.degToRad(t), h = p.degToRad(e);
2896
- i.transformLatLonHeightToOrigin(l, h, r), this.render(), o();
3098
+ const a = v.degToRad(t), h = v.degToRad(e);
3099
+ i.transformLatLonHeightToOrigin(a, h, r), this.render(), o();
2897
3100
  }, o = () => {
2898
3101
  this.tiles.removeEventListener("load-root-tileset", n), this.loedTilesSets.delete(n);
2899
3102
  };
@@ -2905,12 +3108,12 @@ class vr {
2905
3108
  ), this.loedTilesSets.clear(), this.tiles.removeEventListener("needs-render", this.render), this.tiles.removeEventListener("needs-update", this.render), this.tiles.dispose();
2906
3109
  }
2907
3110
  }
2908
- const P = {
3111
+ const F = {
2909
3112
  DEFAULT: 0,
2910
3113
  GRADIENT: 1,
2911
3114
  TOPOGRAPHIC_LINES: 2,
2912
3115
  LIGHTING: 3
2913
- }, Kt = {
3116
+ }, mr = {
2914
3117
  vertexShader: (
2915
3118
  /* glsl */
2916
3119
  `
@@ -2936,7 +3139,7 @@ const P = {
2936
3139
  }
2937
3140
  `
2938
3141
  )
2939
- }, er = {
3142
+ }, yr = {
2940
3143
  vertexShader: (
2941
3144
  /* glsl */
2942
3145
  `
@@ -2982,10 +3185,10 @@ const P = {
2982
3185
  `
2983
3186
  )
2984
3187
  };
2985
- let J = null, $ = null, j = null;
2986
- class tr {
3188
+ let V = null, X = null, q = null;
3189
+ class wr {
2987
3190
  constructor(e, t) {
2988
- this.ssp = e, this.options = t, "url" in this.options ? this.tiles = new E(this.options.url) : (this.tiles = new E(), this._initCesiumIon(this.options)), this._initBasePlugins(this.options);
3191
+ this.ssp = e, this.options = t, "url" in this.options ? this.tiles = W(new D(this.options.url)) : (this.tiles = W(new D()), this._initCesiumIon(this.options)), this._initBasePlugins(this.options);
2989
3192
  }
2990
3193
  tiles;
2991
3194
  tilesFadePlugin;
@@ -2993,12 +3196,12 @@ class tr {
2993
3196
  reorientationPlugin;
2994
3197
  options;
2995
3198
  // 用于模型居中
2996
- _box = new te();
2997
- _sphere = new G();
2998
- _worldToEllipsoidMatrix = new g();
2999
- _ellipsoidPosition = new a();
3199
+ _box = new de();
3200
+ _sphere = new $();
3201
+ _worldToEllipsoidMatrix = new f();
3202
+ _ellipsoidPosition = new l();
3000
3203
  // 当前材质类型
3001
- _materialType = P.DEFAULT;
3204
+ _materialType = F.DEFAULT;
3002
3205
  // 按需渲染标志
3003
3206
  _needsUpdate = !0;
3004
3207
  _cameraTransitionStart = !1;
@@ -3008,7 +3211,7 @@ class tr {
3008
3211
  */
3009
3212
  _initCesiumIon(e) {
3010
3213
  this.tiles.registerPlugin(
3011
- new Pe({
3214
+ new De({
3012
3215
  apiToken: e.apiToken,
3013
3216
  assetId: e.assetId,
3014
3217
  autoRefreshToken: e.autoRefreshToken ?? !0
@@ -3019,9 +3222,9 @@ class tr {
3019
3222
  * 初始化基础插件
3020
3223
  */
3021
3224
  _initBasePlugins(e) {
3022
- if (e._managedByPlugin || (J === null ? J = this.tiles.lruCache : this.tiles.lruCache = J, $ === null ? $ = this.tiles.parseQueue : this.tiles.parseQueue = $, j === null ? j = this.tiles.downloadQueue : this.tiles.downloadQueue = j, this.tiles.lruCache.maxSize = 600, this.tiles.lruCache.minSize = 300, this.tiles.lruCache.unloadPercent = 0.8), this._setupGLTFLoader(), this.tilesFadePlugin = new re({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new ie(), 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) {
3225
+ if (e._managedByPlugin || (V === null ? V = this.tiles.lruCache : this.tiles.lruCache = V, X === null ? X = this.tiles.parseQueue : this.tiles.parseQueue = X, q === null ? q = this.tiles.downloadQueue : this.tiles.downloadQueue = q, this.tiles.lruCache.maxSize = 600, this.tiles.lruCache.minSize = 300, this.tiles.lruCache.unloadPercent = 0.8), this._setupGLTFLoader(), this.tilesFadePlugin = new le({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new ce(), 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) {
3023
3226
  const t = this.options.reorientation || { lon: 120, lat: 30 };
3024
- this.reorientationPlugin = new se({
3227
+ this.reorientationPlugin = new he({
3025
3228
  lon: t.lon,
3026
3229
  lat: t.lat,
3027
3230
  height: t.height ?? 0.1
@@ -3037,7 +3240,7 @@ class tr {
3037
3240
  * 设置 GLTF Loader
3038
3241
  */
3039
3242
  _setupGLTFLoader() {
3040
- const e = new be(this.tiles.manager), t = this.ssp.manager?.store?.modelManager;
3243
+ const e = w.utils.configureGLTFLoader(new ae(this.tiles.manager)), t = this.ssp.manager?.store?.modelManager;
3041
3244
  if (t?.gltfLoader) {
3042
3245
  const { dracoLoader: r, ktx2Loader: i, meshoptDecoder: n } = t.gltfLoader;
3043
3246
  r && e.setDRACOLoader(r), i && e.setKTX2Loader(i), n && e.setMeshoptDecoder(n);
@@ -3081,7 +3284,7 @@ class tr {
3081
3284
  onLoadModel = ({ scene: e }) => {
3082
3285
  e.traverse((t) => {
3083
3286
  t.isMesh && (t.originalMaterial = t.material);
3084
- }), this._materialType !== P.DEFAULT && this.updateMaterial(e);
3287
+ }), this._materialType !== F.DEFAULT && this.updateMaterial(e);
3085
3288
  };
3086
3289
  /**
3087
3290
  * 更新场景中所有网格的材质(参考 customMaterial.js)
@@ -3091,19 +3294,19 @@ class tr {
3091
3294
  e.traverse((r) => {
3092
3295
  if (r.isMesh)
3093
3296
  switch (r.material && r.material !== r.originalMaterial && r.material.dispose(), t) {
3094
- case P.DEFAULT:
3297
+ case F.DEFAULT:
3095
3298
  r.material = r.originalMaterial, r.material && (r.material.side = 2), r.receiveShadow = !1, r.castShadow = !1;
3096
3299
  break;
3097
- case P.GRADIENT:
3098
- r.material = new he(Kt), r.material.side = 2, r.receiveShadow = !1, r.castShadow = !1;
3300
+ case F.GRADIENT:
3301
+ r.material = new ve(mr), r.material.side = 2, r.receiveShadow = !1, r.castShadow = !1;
3099
3302
  break;
3100
- case P.TOPOGRAPHIC_LINES: {
3101
- const i = new he(er);
3303
+ case F.TOPOGRAPHIC_LINES: {
3304
+ const i = new ve(yr);
3102
3305
  i.extensions = { derivatives: !0 }, i.side = 2, r.material = i, r.receiveShadow = !1, r.castShadow = !1;
3103
3306
  break;
3104
3307
  }
3105
- case P.LIGHTING:
3106
- r.material = new Ue(), r.material.side = 2, r.receiveShadow = !0, r.castShadow = !0;
3308
+ case F.LIGHTING:
3309
+ r.material = new lt(), r.material.side = 2, r.receiveShadow = !0, r.castShadow = !0;
3107
3310
  break;
3108
3311
  }
3109
3312
  });
@@ -3150,8 +3353,8 @@ class tr {
3150
3353
  height: r
3151
3354
  };
3152
3355
  const n = () => {
3153
- const l = p.degToRad(t), h = p.degToRad(e);
3154
- i.transformLatLonHeightToOrigin(l, h, r), this.render(), o();
3356
+ const a = v.degToRad(t), h = v.degToRad(e);
3357
+ i.transformLatLonHeightToOrigin(a, h, r), this.render(), o();
3155
3358
  }, o = () => {
3156
3359
  this.tiles.removeEventListener("load-root-tileset", n), this.loedTilesSets.delete(n);
3157
3360
  };
@@ -3170,8 +3373,8 @@ class tr {
3170
3373
  * @param height 椭球高,单位:米
3171
3374
  * @param target 用于接收结果的向量;传入后会被原地修改并返回
3172
3375
  */
3173
- lonLatHeightToPosition(e, t, r = 0, i = new a()) {
3174
- const n = p.degToRad(t), o = p.degToRad(e);
3376
+ lonLatHeightToPosition(e, t, r = 0, i = new l()) {
3377
+ const n = v.degToRad(t), o = v.degToRad(e);
3175
3378
  return this.tiles.ellipsoid.getCartographicToPosition(
3176
3379
  n,
3177
3380
  o,
@@ -3189,11 +3392,11 @@ class tr {
3189
3392
  return this.tiles.group.updateWorldMatrix(!0, !1), this._worldToEllipsoidMatrix.copy(this.tiles.group.matrixWorld).invert(), this._ellipsoidPosition.copy(e).applyMatrix4(this._worldToEllipsoidMatrix), this.tiles.ellipsoid.getPositionToCartographic(
3190
3393
  this._ellipsoidPosition,
3191
3394
  t
3192
- ), t.lon = p.radToDeg(t.lon), t.lat = p.radToDeg(t.lat), t;
3395
+ ), t.lon = v.radToDeg(t.lon), t.lat = v.radToDeg(t.lat), t;
3193
3396
  }
3194
3397
  }
3195
- const H = 2;
3196
- class wr {
3398
+ const Z = 2;
3399
+ class Gr {
3197
3400
  constructor(e) {
3198
3401
  this.ssp = e;
3199
3402
  const { controls: t, viewport: r } = e;
@@ -3214,12 +3417,12 @@ class wr {
3214
3417
  _downloadQueue = null;
3215
3418
  _referenceOrigin = null;
3216
3419
  _referencePlacements = /* @__PURE__ */ new WeakMap();
3217
- _referenceFrame = new g();
3218
- _targetFrame = new g();
3219
- _sourceFrame = new g();
3220
- _placementMatrix = new g();
3221
- _upCorrectionMatrix = new g();
3222
- _boundingSphere = new G();
3420
+ _referenceFrame = new f();
3421
+ _targetFrame = new f();
3422
+ _sourceFrame = new f();
3423
+ _placementMatrix = new f();
3424
+ _upCorrectionMatrix = new f();
3425
+ _boundingSphere = new $();
3223
3426
  _beforeRenderHandler = () => {
3224
3427
  this.needsUpdate && (this.needsUpdate = !1, this.ssp.viewport.camera.updateMatrixWorld(), this.tilesMap.forEach((e) => {
3225
3428
  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();
@@ -3259,19 +3462,19 @@ class wr {
3259
3462
  async loadTiles(e) {
3260
3463
  const t = "url" in e ? e.url : e.assetId;
3261
3464
  if (this.tilesMap.has(t))
3262
- return D.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
3263
- const { ssp: r } = this, i = this._getReferencePlacement(e), n = this._getTilesRendererOptions(e, i), o = new tr(r, {
3465
+ return w.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
3466
+ const { ssp: r } = this, i = this._getReferencePlacement(e), n = this._getTilesRendererOptions(e, i), o = new wr(r, {
3264
3467
  ...n,
3265
3468
  _managedByPlugin: !0
3266
3469
  });
3267
3470
  i && (this._referencePlacements.set(o, i), o.options.reorientation = i);
3268
- const { tiles: l } = o;
3269
- this._lruCache === null ? this._lruCache = l.lruCache : l.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = l.parseQueue : l.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = l.downloadQueue : l.downloadQueue = this._downloadQueue, l.lruCache.maxSize = 600, l.lruCache.minSize = 300, l.lruCache.unloadPercent = 0.8, this.tilesMap.set(t, o), l.setCamera(this._tilesCamera), l.setResolutionFromRenderer(this._tilesCamera, r.viewport.renderer), r.addObject(l.group), this._referenceOrigin && this.applyReferencePlacement(o, i);
3471
+ const { tiles: a } = o;
3472
+ this._lruCache === null ? this._lruCache = a.lruCache : a.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = a.parseQueue : a.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = a.downloadQueue : a.downloadQueue = this._downloadQueue, a.lruCache.maxSize = 600, a.lruCache.minSize = 300, a.lruCache.unloadPercent = 0.8, this.tilesMap.set(t, o), a.setCamera(this._tilesCamera), a.setResolutionFromRenderer(this._tilesCamera, r.viewport.renderer), r.addObject(a.group), this._referenceOrigin && this.applyReferencePlacement(o, i);
3270
3473
  const h = () => {
3271
3474
  this.cameraTransitionStart || (this.needsUpdate = !0, r.render());
3272
3475
  };
3273
- return l.addEventListener("load-model", h), new Promise((c) => {
3274
- l.addEventListener("load-tile-set", () => {
3476
+ return a.addEventListener("load-model", h), new Promise((c) => {
3477
+ a.addEventListener("load-tile-set", () => {
3275
3478
  const d = this._referencePlacements.get(o);
3276
3479
  this._referenceOrigin && this.applyReferencePlacement(o, d ?? null), h(), c(o);
3277
3480
  });
@@ -3308,9 +3511,9 @@ class wr {
3308
3511
  }
3309
3512
  invalidate(e, t, r, i) {
3310
3513
  (i ? [i] : Array.from(this.tilesMap.values())).forEach((o) => {
3311
- const l = this._referencePlacements.get(o) ?? null;
3514
+ const a = this._referencePlacements.get(o) ?? null;
3312
3515
  this._referenceOrigin ? this.applyReferencePlacement(o, {
3313
- ...l ?? {},
3516
+ ...a ?? {},
3314
3517
  lon: e,
3315
3518
  lat: t,
3316
3519
  height: r
@@ -3319,27 +3522,27 @@ class wr {
3319
3522
  }
3320
3523
  applyReferencePlacement(e, t) {
3321
3524
  if (!this._referenceOrigin)
3322
- return D.utils.warn("TilesRendererManager: reference origin is not set."), !1;
3525
+ return w.utils.warn("TilesRendererManager: reference origin is not set."), !1;
3323
3526
  const { ellipsoid: r, group: i } = e.tiles, n = this._referenceOrigin, o = this._isGeoreferenced(e);
3324
3527
  if (r.getObjectFrame(
3325
- p.degToRad(n.lat),
3326
- p.degToRad(n.lon),
3528
+ v.degToRad(n.lat),
3529
+ v.degToRad(n.lon),
3327
3530
  n.height ?? 0.1,
3328
3531
  0,
3329
3532
  0,
3330
3533
  0,
3331
3534
  this._referenceFrame,
3332
- H
3535
+ Z
3333
3536
  ), this._placementMatrix.copy(this._referenceFrame).invert(), t)
3334
3537
  r.getObjectFrame(
3335
- p.degToRad(t.lat),
3336
- p.degToRad(t.lon),
3538
+ v.degToRad(t.lat),
3539
+ v.degToRad(t.lon),
3337
3540
  t.height ?? 0,
3338
3541
  0,
3339
3542
  0,
3340
3543
  0,
3341
3544
  this._targetFrame,
3342
- H
3545
+ Z
3343
3546
  ), this._placementMatrix.multiply(this._targetFrame), o ? (this._sourceFrame.copy(this._getSourceFrame(e)).invert(), this._placementMatrix.multiply(this._sourceFrame)) : (this._getUpCorrectionMatrix(t.up ?? "+z"), this._placementMatrix.multiply(this._upCorrectionMatrix));
3344
3547
  else if (!o)
3345
3548
  return !1;
@@ -3365,7 +3568,7 @@ class wr {
3365
3568
  0,
3366
3569
  0,
3367
3570
  this._sourceFrame,
3368
- H
3571
+ Z
3369
3572
  ), this._sourceFrame;
3370
3573
  }
3371
3574
  _getReferencePlacement(e) {
@@ -3411,230 +3614,230 @@ class wr {
3411
3614
  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;
3412
3615
  }
3413
3616
  }
3414
- function _r(s) {
3617
+ function Br(s) {
3415
3618
  if (s == null) return [0, 0, 0, 0];
3416
3619
  const e = String(s).trim().toLowerCase();
3417
3620
  if (e === "" || e === "transparent") return [0, 0, 0, 0];
3418
3621
  const t = /^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]*\.?[0-9]+)\s*\)$/.exec(e);
3419
3622
  if (t !== null) {
3420
- const i = Number(t[1]) / 255, n = Number(t[2]) / 255, o = Number(t[3]) / 255, l = Number(t[4]);
3421
- return [_(i), _(n), _(o), _(l)];
3623
+ const i = Number(t[1]) / 255, n = Number(t[2]) / 255, o = Number(t[3]) / 255, a = Number(t[4]);
3624
+ return [T(i), T(n), T(o), T(a)];
3422
3625
  }
3423
3626
  const r = /^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$/.exec(e);
3424
3627
  if (r !== null) {
3425
3628
  const i = Number(r[1]) / 255, n = Number(r[2]) / 255, o = Number(r[3]) / 255;
3426
- return [_(i), _(n), _(o), 1];
3629
+ return [T(i), T(n), T(o), 1];
3427
3630
  }
3428
3631
  if (e.startsWith("#")) {
3429
3632
  const i = e.slice(1);
3430
3633
  if (i.length === 3) {
3431
- const n = parseInt(i[0] + i[0], 16) / 255, o = parseInt(i[1] + i[1], 16) / 255, l = parseInt(i[2] + i[2], 16) / 255;
3432
- if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(l))
3433
- return [n, o, l, 1];
3634
+ const n = parseInt(i[0] + i[0], 16) / 255, o = parseInt(i[1] + i[1], 16) / 255, a = parseInt(i[2] + i[2], 16) / 255;
3635
+ if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(a))
3636
+ return [n, o, a, 1];
3434
3637
  } else if (i.length === 6) {
3435
- const n = parseInt(i.slice(0, 2), 16) / 255, o = parseInt(i.slice(2, 4), 16) / 255, l = parseInt(i.slice(4, 6), 16) / 255;
3436
- if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(l))
3437
- return [n, o, l, 1];
3638
+ const n = parseInt(i.slice(0, 2), 16) / 255, o = parseInt(i.slice(2, 4), 16) / 255, a = parseInt(i.slice(4, 6), 16) / 255;
3639
+ if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(a))
3640
+ return [n, o, a, 1];
3438
3641
  } else if (i.length === 8) {
3439
- const n = parseInt(i.slice(0, 2), 16) / 255, o = parseInt(i.slice(2, 4), 16) / 255, l = parseInt(i.slice(4, 6), 16) / 255, h = parseInt(i.slice(6, 8), 16) / 255;
3440
- if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(l) && Number.isFinite(h))
3441
- return [n, o, l, h];
3642
+ const n = parseInt(i.slice(0, 2), 16) / 255, o = parseInt(i.slice(2, 4), 16) / 255, a = parseInt(i.slice(4, 6), 16) / 255, h = parseInt(i.slice(6, 8), 16) / 255;
3643
+ if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(a) && Number.isFinite(h))
3644
+ return [n, o, a, h];
3442
3645
  }
3443
3646
  }
3444
3647
  return [1, 1, 1, 1];
3445
3648
  }
3446
- function Mr(s, e) {
3447
- typeof s.fillOpacity == "number" && Number.isFinite(s.fillOpacity) ? e[0] = _(s.fillOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[0] = _(s.opacity) : e[0] = 1, typeof s.strokeOpacity == "number" && Number.isFinite(s.strokeOpacity) ? e[1] = _(s.strokeOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[1] = _(s.opacity) : e[1] = 1;
3649
+ function Wr(s, e) {
3650
+ typeof s.fillOpacity == "number" && Number.isFinite(s.fillOpacity) ? e[0] = T(s.fillOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[0] = T(s.opacity) : e[0] = 1, typeof s.strokeOpacity == "number" && Number.isFinite(s.strokeOpacity) ? e[1] = T(s.strokeOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[1] = T(s.opacity) : e[1] = 1;
3448
3651
  }
3449
- function _(s) {
3652
+ function T(s) {
3450
3653
  return !Number.isFinite(s) || s < 0 ? 0 : s > 1 ? 1 : s;
3451
3654
  }
3452
- const Se = 100, ne = 1e-4;
3453
- function I(s, e) {
3655
+ const Ae = 100, ue = 1e-4;
3656
+ function U(s, e) {
3454
3657
  const t = s[0] - e[0], r = s[1] - e[1];
3455
3658
  return Math.sqrt(t * t + r * r);
3456
3659
  }
3457
- function rr(s) {
3660
+ function vr(s) {
3458
3661
  let e = 0;
3459
3662
  for (let t = 0; t < s.length - 1; t++)
3460
- e += I(s[t], s[t + 1]);
3663
+ e += U(s[t], s[t + 1]);
3461
3664
  return e;
3462
3665
  }
3463
- function Or(s) {
3464
- return Math.pow(rr(s), 0.99);
3666
+ function zr(s) {
3667
+ return Math.pow(vr(s), 0.99);
3465
3668
  }
3466
- function Le(s, e) {
3669
+ function Ve(s, e) {
3467
3670
  return [(s[0] + e[0]) / 2, (s[1] + e[1]) / 2];
3468
3671
  }
3469
- function ee(s, e) {
3672
+ function oe(s, e) {
3470
3673
  let t;
3471
3674
  const r = Math.asin(
3472
- Math.abs(e[1] - s[1]) / I(s, e)
3675
+ Math.abs(e[1] - s[1]) / U(s, e)
3473
3676
  );
3474
3677
  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;
3475
3678
  }
3476
- function Sr(s, e, t) {
3477
- const r = ee(e, s) - ee(e, t);
3679
+ function Jr(s, e, t) {
3680
+ const r = oe(e, s) - oe(e, t);
3478
3681
  return r < 0 ? r + Math.PI * 2 : r;
3479
3682
  }
3480
- function ir(s, e, t) {
3683
+ function _r(s, e, t) {
3481
3684
  return (t[1] - s[1]) * (e[0] - s[0]) > (e[1] - s[1]) * (t[0] - s[0]);
3482
3685
  }
3483
- function br(s, e, t, r, i) {
3484
- const n = ee(s, e), o = i ? n + t : n - t, l = r * Math.cos(o), h = r * Math.sin(o);
3485
- return [e[0] + l, e[1] + h];
3686
+ function $r(s, e, t, r, i) {
3687
+ const n = oe(s, e), o = i ? n + t : n - t, a = r * Math.cos(o), h = r * Math.sin(o);
3688
+ return [e[0] + a, e[1] + h];
3486
3689
  }
3487
- function oe(s, e, t) {
3690
+ function ge(s, e, t) {
3488
3691
  let r = s[0] - e[0], i = s[1] - e[1];
3489
3692
  const n = Math.sqrt(r * r + i * i);
3490
3693
  r /= n, i /= n;
3491
- let o = t[0] - e[0], l = t[1] - e[1];
3492
- const h = Math.sqrt(o * o + l * l);
3493
- return o /= h, l /= h, [r + o, i + l];
3494
- }
3495
- function ae(s, e, t, r) {
3496
- const i = oe(e, t, r);
3497
- let n, o, l, h, c;
3498
- const d = Math.sqrt(i[0] * i[0] + i[1] * i[1]), f = i[0] / d, v = i[1] / d, M = I(e, t), y = I(t, r);
3499
- return d > ne ? ir(e, t, r) ? (l = s * M, h = t[0] - l * v, c = t[1] + l * f, n = [h, c], l = s * y, h = t[0] + l * v, c = t[1] - l * f, o = [h, c]) : (l = s * M, h = t[0] + l * v, c = t[1] - l * f, n = [h, c], l = s * y, h = t[0] - l * v, c = t[1] + l * f, o = [h, c]) : (h = t[0] + s * (e[0] - t[0]), c = t[1] + s * (e[1] - t[1]), n = [h, c], h = t[0] + s * (r[0] - t[0]), c = t[1] + s * (r[1] - t[1]), o = [h, c]), [n, o];
3500
- }
3501
- function sr(s) {
3502
- const e = s[0], t = s[1], r = s[2], n = ae(0, e, t, r)[0], o = oe(e, t, r), l = Math.sqrt(o[0] * o[0] + o[1] * o[1]);
3694
+ let o = t[0] - e[0], a = t[1] - e[1];
3695
+ const h = Math.sqrt(o * o + a * a);
3696
+ return o /= h, a /= h, [r + o, i + a];
3697
+ }
3698
+ function pe(s, e, t, r) {
3699
+ const i = ge(e, t, r);
3700
+ let n, o, a, h, c;
3701
+ const d = Math.sqrt(i[0] * i[0] + i[1] * i[1]), g = i[0] / d, p = i[1] / d, m = U(e, t), _ = U(t, r);
3702
+ return d > ue ? _r(e, t, r) ? (a = s * m, h = t[0] - a * p, c = t[1] + a * g, n = [h, c], a = s * _, h = t[0] + a * p, c = t[1] - a * g, o = [h, c]) : (a = s * m, h = t[0] + a * p, c = t[1] - a * g, n = [h, c], a = s * _, h = t[0] - a * p, c = t[1] + a * g, o = [h, c]) : (h = t[0] + s * (e[0] - t[0]), c = t[1] + s * (e[1] - t[1]), n = [h, c], h = t[0] + s * (r[0] - t[0]), c = t[1] + s * (r[1] - t[1]), o = [h, c]), [n, o];
3703
+ }
3704
+ function Mr(s) {
3705
+ const e = s[0], t = s[1], r = s[2], n = pe(0, e, t, r)[0], o = ge(e, t, r), a = Math.sqrt(o[0] * o[0] + o[1] * o[1]);
3503
3706
  let h;
3504
- if (l > ne) {
3505
- const c = Le(e, t), d = e[0] - c[0], f = e[1] - c[1], M = 2 / I(e, t), y = -M * f, m = M * d, w = y * y - m * m, T = 2 * y * m, k = m * m - y * y, A = n[0] - c[0], R = n[1] - c[1];
3707
+ if (a > ue) {
3708
+ const c = Ve(e, t), d = e[0] - c[0], g = e[1] - c[1], m = 2 / U(e, t), _ = -m * g, y = m * d, O = _ * _ - y * y, b = 2 * _ * y, S = y * y - _ * _, M = n[0] - c[0], C = n[1] - c[1];
3506
3709
  h = [
3507
- c[0] + w * A + T * R,
3508
- c[1] + T * A + k * R
3710
+ c[0] + O * M + b * C,
3711
+ c[1] + b * M + S * C
3509
3712
  ];
3510
3713
  } else
3511
3714
  h = [
3512
- e[0] + U(1) * (t[0] - e[0]),
3513
- e[1] + U(1) * (t[1] - e[1])
3715
+ e[0] + H(1) * (t[0] - e[0]),
3716
+ e[1] + H(1) * (t[1] - e[1])
3514
3717
  ];
3515
3718
  return h;
3516
3719
  }
3517
- function U(s) {
3720
+ function H(s) {
3518
3721
  return 0.3 * s;
3519
3722
  }
3520
- function nr(s) {
3521
- const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1], o = ae(0, t, r, i)[1], l = oe(t, r, i), h = Math.sqrt(l[0] * l[0] + l[1] * l[1]);
3723
+ function Or(s) {
3724
+ const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1], o = pe(0, t, r, i)[1], a = ge(t, r, i), h = Math.sqrt(a[0] * a[0] + a[1] * a[1]);
3522
3725
  let c;
3523
- if (h > ne) {
3524
- const d = Le(r, i), f = i[0] - d[0], v = i[1] - d[1], y = 2 / I(r, i), m = -y * v, w = y * f, T = m * m - w * w, k = 2 * m * w, A = w * w - m * m, R = o[0] - d[0], le = o[1] - d[1];
3726
+ if (h > ue) {
3727
+ const d = Ve(r, i), g = i[0] - d[0], p = i[1] - d[1], _ = 2 / U(r, i), y = -_ * p, O = _ * g, b = y * y - O * O, S = 2 * y * O, M = O * O - y * y, C = o[0] - d[0], G = o[1] - d[1];
3525
3728
  c = [
3526
- d[0] + T * R + k * le,
3527
- d[1] + k * R + A * le
3729
+ d[0] + b * C + S * G,
3730
+ d[1] + S * C + M * G
3528
3731
  ];
3529
3732
  } else
3530
3733
  c = [
3531
- i[0] + U(1) * (r[0] - i[0]),
3532
- i[1] + U(1) * (r[1] - i[1])
3734
+ i[0] + H(1) * (r[0] - i[0]),
3735
+ i[1] + H(1) * (r[1] - i[1])
3533
3736
  ];
3534
3737
  return c;
3535
3738
  }
3536
- function xr(s, e) {
3537
- const r = [sr(e)];
3739
+ function jr(s, e) {
3740
+ const r = [Mr(e)];
3538
3741
  for (let o = 0; o < e.length - 2; o++) {
3539
- const l = e[o], h = e[o + 1], c = e[o + 2], d = ae(s, l, h, c);
3742
+ const a = e[o], h = e[o + 1], c = e[o + 2], d = pe(s, a, h, c);
3540
3743
  r.push(d[0], d[1]);
3541
3744
  }
3542
- const i = nr(e);
3745
+ const i = Or(e);
3543
3746
  r.push(i);
3544
3747
  const n = [];
3545
3748
  for (let o = 0; o < e.length - 1; o++) {
3546
- const l = e[o], h = e[o + 1];
3547
- n.push(l);
3548
- for (let c = 0; c < Se; c++) {
3549
- const d = c / Se, f = Math.pow(1 - d, 3) * l[0] + 3 * d * Math.pow(1 - d, 2) * r[o * 2][0] + 3 * d * d * (1 - d) * r[o * 2 + 1][0] + Math.pow(d, 3) * h[0], v = Math.pow(1 - d, 3) * l[1] + 3 * d * Math.pow(1 - d, 2) * r[o * 2][1] + 3 * d * d * (1 - d) * r[o * 2 + 1][1] + Math.pow(d, 3) * h[1];
3550
- n.push([f, v]);
3749
+ const a = e[o], h = e[o + 1];
3750
+ n.push(a);
3751
+ for (let c = 0; c < Ae; c++) {
3752
+ const d = c / Ae, g = Math.pow(1 - d, 3) * a[0] + 3 * d * Math.pow(1 - d, 2) * r[o * 2][0] + 3 * d * d * (1 - d) * r[o * 2 + 1][0] + Math.pow(d, 3) * h[0], p = Math.pow(1 - d, 3) * a[1] + 3 * d * Math.pow(1 - d, 2) * r[o * 2][1] + 3 * d * d * (1 - d) * r[o * 2 + 1][1] + Math.pow(d, 3) * h[1];
3753
+ n.push([g, p]);
3551
3754
  }
3552
3755
  n.push(h);
3553
3756
  }
3554
3757
  return n;
3555
3758
  }
3556
- function Cr(s) {
3759
+ function Hr(s) {
3557
3760
  if (s.length <= 2) return s;
3558
3761
  const e = 2, t = [], r = s.length - e - 1;
3559
3762
  t.push(s[0]);
3560
3763
  for (let i = 0; i <= r; i++)
3561
3764
  for (let n = 0; n <= 1; n += 0.05) {
3562
- let o = 0, l = 0;
3765
+ let o = 0, a = 0;
3563
3766
  for (let h = 0; h <= e; h++) {
3564
- const c = or(h, n);
3565
- o += c * s[i + h][0], l += c * s[i + h][1];
3767
+ const c = Sr(h, n);
3768
+ o += c * s[i + h][0], a += c * s[i + h][1];
3566
3769
  }
3567
- t.push([o, l]);
3770
+ t.push([o, a]);
3568
3771
  }
3569
3772
  return t.push(s[s.length - 1]), t;
3570
3773
  }
3571
- function or(s, e) {
3774
+ function Sr(s, e) {
3572
3775
  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;
3573
3776
  }
3574
- function Tr(s, e) {
3575
- return Y(s, e);
3777
+ function Yr(s, e) {
3778
+ return ee(s, e);
3576
3779
  }
3577
- function kr(s, e) {
3578
- return Ne(s, e);
3780
+ function Qr(s, e) {
3781
+ return Je(s, e);
3579
3782
  }
3580
- function Pr(s) {
3581
- return !s || s.length < 3 ? [] : Re(s);
3783
+ function Vr(s) {
3784
+ return !s || s.length < 3 ? [] : ze(s);
3582
3785
  }
3583
- function Er(s) {
3584
- return !s || s.length < 3 ? [] : Ie(s);
3786
+ function Xr(s) {
3787
+ return !s || s.length < 3 ? [] : We(s);
3585
3788
  }
3586
- function Ir(s) {
3587
- return !s || s.length < 2 ? [] : Ee(s);
3789
+ function qr(s) {
3790
+ return !s || s.length < 2 ? [] : Be(s);
3588
3791
  }
3589
3792
  export {
3590
- yr as ArcgisTilesRenderer,
3591
- K as EMERGENCY_RESOURCE_ICON_BY_ONTOLOGY_ID,
3592
- mr as EMERGENCY_RESOURCE_ONTOLOGY_IDS,
3593
- Se as FITTING_COUNT,
3594
- ct as GisPlotArrow,
3595
- x as GisPlotBase,
3596
- ut as GisPlotCircle,
3597
- st as GisPlotLine,
3598
- it as GisPlotPoint,
3599
- nt as GisPlotPolygon,
3600
- ot as GisPlotRectangle,
3601
- lt as GisPlotSector,
3602
- ht as GisPlotText,
3603
- zt as GroundDecalManager,
3604
- P as MaterialType,
3605
- I as MathDistance,
3606
- Le as Mid,
3607
- B as OverlayManager,
3793
+ Fr as ArcgisTilesRenderer,
3794
+ ne as EMERGENCY_RESOURCE_ICON_BY_ONTOLOGY_ID,
3795
+ Dr as EMERGENCY_RESOURCE_ONTOLOGY_IDS,
3796
+ Ae as FITTING_COUNT,
3797
+ Ct as GisPlotArrow,
3798
+ E as GisPlotBase,
3799
+ Pt as GisPlotCircle,
3800
+ Ot as GisPlotLine,
3801
+ Mt as GisPlotPoint,
3802
+ St as GisPlotPolygon,
3803
+ bt as GisPlotRectangle,
3804
+ xt as GisPlotSector,
3805
+ kt as GisPlotText,
3806
+ nr as GroundDecalManager,
3807
+ F as MaterialType,
3808
+ U as MathDistance,
3809
+ Ve as Mid,
3810
+ j as OverlayManager,
3608
3811
  u as OverlayType,
3609
- Wt as PlotPrimitiveBridge,
3610
- vr as TerrainTilesRenderer,
3611
- C as TerrainType,
3612
- et as TileCustomMaterialPlugin,
3613
- tr as TilesRenderer,
3614
- wr as TilesRendererManager,
3615
- ne as ZERO_TOLERANCE,
3616
- Xt as computePlotBoundingBox,
3617
- kr as createAssaultDirectionArrow,
3618
- Pr as createAttackArrow,
3619
- Ir as createCurvedArrow,
3620
- Tr as createFineArrow,
3621
- Er as createSwallowtailAttackArrow,
3622
- pr as default,
3623
- Vt as flyToPlotById,
3624
- Sr as getAngleOfThreePoints,
3625
- ee as getAzimuth,
3626
- Or as getBaseLength,
3627
- ae as getBisectorNormals,
3628
- xr as getCurvePoints,
3629
- oe as getNormal,
3630
- Cr as getQBSplinePoints,
3631
- br as getThirdPoint,
3632
- ir as isClockWise,
3633
- _r as parseColorToRGBA,
3634
- yt as plotOrderToRenderOrder,
3635
- Lt as resolveEmergencyResourceIcon,
3636
- Mr as resolveOpacity,
3637
- Dt as resolvePlotPointImageUrl,
3638
- ft as sanitizePlotOrder,
3639
- rr as wholeDistance
3812
+ sr as PlotPrimitiveBridge,
3813
+ Ur as TerrainTilesRenderer,
3814
+ L as TerrainType,
3815
+ wt as TileCustomMaterialPlugin,
3816
+ wr as TilesRenderer,
3817
+ Gr as TilesRendererManager,
3818
+ ue as ZERO_TOLERANCE,
3819
+ ur as computePlotBoundingBox,
3820
+ Qr as createAssaultDirectionArrow,
3821
+ Vr as createAttackArrow,
3822
+ qr as createCurvedArrow,
3823
+ Yr as createFineArrow,
3824
+ Xr as createSwallowtailAttackArrow,
3825
+ Ar as default,
3826
+ gr as flyToPlotById,
3827
+ Jr as getAngleOfThreePoints,
3828
+ oe as getAzimuth,
3829
+ zr as getBaseLength,
3830
+ pe as getBisectorNormals,
3831
+ jr as getCurvePoints,
3832
+ ge as getNormal,
3833
+ Hr as getQBSplinePoints,
3834
+ $r as getThirdPoint,
3835
+ _r as isClockWise,
3836
+ Br as parseColorToRGBA,
3837
+ At as plotOrderToRenderOrder,
3838
+ er as resolveEmergencyResourceIcon,
3839
+ Wr as resolveOpacity,
3840
+ Re as resolvePlotPointImageUrl,
3841
+ Lt as sanitizePlotOrder,
3842
+ vr as wholeDistance
3640
3843
  };