@soonspacejs/plugin-tiles 2.15.17 → 2.15.18

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,9 +1,9 @@
1
- import L, { BaseMesh as Le } from "soonspacejs";
1
+ import D, { BaseMesh as De } from "soonspacejs";
2
2
  import { TilesRenderer as E } from "um-3d-tiles-renderer";
3
3
  import { GLTFLoader as be } from "three/examples/jsm/loaders/GLTFLoader.js";
4
- import { MathUtils as p, MeshBasicMaterial as Ce, Color as W, Box3 as te, Sphere as G, Vector3 as a, Matrix4 as g, Quaternion as xe, 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 ke, XYZTilesOverlay as Te, 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 D, 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";
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
7
  import { createFineArrow as Y, createCurvedArrow as Ee, createSwallowtailAttackArrow as Ie, createAttackArrow as Re, createAssaultDirectionArrow as Ne } from "cesium-to-three/arrow";
8
8
  class qe {
9
9
  constructor(e) {
@@ -15,7 +15,7 @@ class qe {
15
15
  return null;
16
16
  const l = t.options.ktx2Loader;
17
17
  if (!l)
18
- throw new Error(`${L.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
18
+ throw new Error(`${D.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
19
19
  return t.loadTextureImage(e, n, l);
20
20
  }
21
21
  }
@@ -46,7 +46,7 @@ class pr {
46
46
  downloadQueue = null;
47
47
  async loadTiles(e) {
48
48
  if (this.tilesMap.has(e)) {
49
- L.utils.warn(`${e} already loaded`);
49
+ D.utils.warn(`${e} already loaded`);
50
50
  return;
51
51
  }
52
52
  const { ssp: t, ssp: { viewport: r } } = this, i = new E(e);
@@ -73,7 +73,7 @@ let Ze = class {
73
73
  priority = -999;
74
74
  processTileModel(e) {
75
75
  e.traverse((t) => {
76
- t.material && (t.material = new Ce());
76
+ t.material && (t.material = new xe());
77
77
  });
78
78
  }
79
79
  };
@@ -86,10 +86,10 @@ class yr {
86
86
  return i.metadataAvailability = -1, new Response(JSON.stringify(i));
87
87
  }
88
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 ke({
89
+ }, this.tilesFadePlugin = new re({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new ie(), this.quantizedPlugin = new Q({}), this.customMaterialPlugin = new Ze(), this.imageOverlayPlugin = new Te({
90
90
  renderer: e.viewport.renderer,
91
91
  overlays: [
92
- new Te({
92
+ new ke({
93
93
  url: "https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
94
94
  })
95
95
  ]
@@ -152,7 +152,7 @@ class et {
152
152
  */
153
153
  processTileModel(e) {
154
154
  e.traverse((t) => {
155
- t.material && (t.material = new Ce());
155
+ t.material && (t.material = new xe());
156
156
  });
157
157
  }
158
158
  /**
@@ -184,7 +184,7 @@ class et {
184
184
  e.needsUpdate = !0;
185
185
  }
186
186
  }
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 || {}), x = /* @__PURE__ */ ((s) => (s.QUANTIZED_MESH = "quantizedMesh", s.CESIUM_ION = "cesiumIon", s))(x || {});
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
188
  class B {
189
189
  constructor(e, t) {
190
190
  this.imageOverlayPlugin = e, this.resourceManager = t;
@@ -370,7 +370,7 @@ class B {
370
370
  addXYZOverlay(e) {
371
371
  const t = this._getImageOverlayPluginForAdd(e.id);
372
372
  if (!t) return null;
373
- const r = new Te({
373
+ const r = new ke({
374
374
  url: e.url,
375
375
  color: typeof e.color == "number" ? e.color : 16777215,
376
376
  opacity: e.opacity ?? 1
@@ -883,7 +883,7 @@ class rt {
883
883
  this.clear();
884
884
  }
885
885
  }
886
- class C extends Le {
886
+ class x extends De {
887
887
  /**
888
888
  * 类别。基类构造为空串,子类用 `readonly category = 'xxx' as const` 覆写。
889
889
  * 桥接器据此 switch 分支。
@@ -973,7 +973,7 @@ class C extends Le {
973
973
  return this.options.points || [];
974
974
  }
975
975
  }
976
- class it extends C {
976
+ class it extends x {
977
977
  category = "point";
978
978
  constructor(e) {
979
979
  super(e);
@@ -992,7 +992,7 @@ class it extends C {
992
992
  return this.getCenterPoints();
993
993
  }
994
994
  }
995
- class st extends C {
995
+ class st extends x {
996
996
  category = "line";
997
997
  constructor(e) {
998
998
  super(e);
@@ -1002,7 +1002,7 @@ class st extends C {
1002
1002
  this.options = { ...this.options, ...e };
1003
1003
  }
1004
1004
  }
1005
- class nt extends C {
1005
+ class nt extends x {
1006
1006
  category = "polygon";
1007
1007
  constructor(e) {
1008
1008
  super(e);
@@ -1012,7 +1012,7 @@ class nt extends C {
1012
1012
  this.options = { ...this.options, ...e };
1013
1013
  }
1014
1014
  }
1015
- class ot extends C {
1015
+ class ot extends x {
1016
1016
  category = "rectangle";
1017
1017
  constructor(e) {
1018
1018
  super(e);
@@ -1023,7 +1023,7 @@ class ot extends C {
1023
1023
  }
1024
1024
  }
1025
1025
  const at = p.DEG2RAD, pe = 111320;
1026
- class lt extends C {
1026
+ class lt extends x {
1027
1027
  category = "sector";
1028
1028
  constructor(e) {
1029
1029
  super(e);
@@ -1043,7 +1043,7 @@ class lt extends C {
1043
1043
  ];
1044
1044
  }
1045
1045
  }
1046
- class ct extends C {
1046
+ class ct extends x {
1047
1047
  category = "arrow";
1048
1048
  /** generateCoords() 填充的闭合多边形顶点;初始为空 */
1049
1049
  generatedCoords = [];
@@ -1113,7 +1113,7 @@ class ct extends C {
1113
1113
  };
1114
1114
  }
1115
1115
  }
1116
- class ht extends C {
1116
+ class ht extends x {
1117
1117
  category = "text";
1118
1118
  constructor(e) {
1119
1119
  super(e);
@@ -1133,7 +1133,7 @@ class ht extends C {
1133
1133
  }
1134
1134
  }
1135
1135
  const dt = p.DEG2RAD, fe = 111320;
1136
- class ut extends C {
1136
+ class ut extends x {
1137
1137
  category = "circle";
1138
1138
  constructor(e) {
1139
1139
  super(e);
@@ -1195,7 +1195,7 @@ new a();
1195
1195
  new a();
1196
1196
  new a();
1197
1197
  new a();
1198
- new xe();
1198
+ new Ce();
1199
1199
  new Array(9);
1200
1200
  new a();
1201
1201
  new a();
@@ -1245,7 +1245,7 @@ new a();
1245
1245
  new a();
1246
1246
  new a();
1247
1247
  new a();
1248
- new xe();
1248
+ new Ce();
1249
1249
  new a();
1250
1250
  new a();
1251
1251
  new a();
@@ -1724,34 +1724,34 @@ typeof process < "u" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE;
1724
1724
  typeof process < "u" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS;
1725
1725
  p.DEG2RAD;
1726
1726
  p.DEG2RAD;
1727
- const 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-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", 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-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", 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-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", 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-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 = {
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
1728
  OutdoorFireHydrant: At,
1729
1729
  UndergroundHydrant: Nt,
1730
1730
  AboveGroundHydrant: Rt,
1731
1731
  MunicipalFireHydrants: Et,
1732
- FireWaterReservoir: Tt,
1732
+ FireWaterReservoir: kt,
1733
1733
  NaturalWater: It,
1734
1734
  HospitalResourcePoint: Pt,
1735
1735
  PublicSecurityResourcePoint: Ft,
1736
- SupportMaterialPoint: xt,
1737
- FireStation: kt,
1738
- LinkageUnit: Ct
1736
+ SupportMaterialPoint: Ct,
1737
+ FireStation: Tt,
1738
+ LinkageUnit: xt
1739
1739
  }, mr = Object.freeze(
1740
1740
  Object.keys(K)
1741
1741
  );
1742
- function Dt(s) {
1742
+ function Lt(s) {
1743
1743
  const e = s?.trim();
1744
1744
  return !e || !Object.prototype.hasOwnProperty.call(
1745
1745
  K,
1746
1746
  e
1747
1747
  ) ? null : K[e];
1748
1748
  }
1749
- function Lt(s) {
1750
- return s.imageUrl?.trim() || Dt(s.ontologyId);
1749
+ function Dt(s) {
1750
+ return s.imageUrl?.trim() || Lt(s.ontologyId);
1751
1751
  }
1752
1752
  new g();
1753
1753
  function we(s) {
1754
- return s instanceof D || s instanceof N ? s.group : s.classification.group;
1754
+ return s instanceof L || s instanceof N ? s.group : s.classification.group;
1755
1755
  }
1756
1756
  function Gt(s) {
1757
1757
  const e = s.options, t = JSON.stringify(e.points ?? []);
@@ -1884,7 +1884,7 @@ class Wt {
1884
1884
  */
1885
1885
  _supportsStyleHotUpdate(e) {
1886
1886
  const { primitive: t, plot: r } = e;
1887
- return t instanceof D || t instanceof N || t instanceof F && r.options.pointStyle === "image";
1887
+ return t instanceof L || t instanceof N || t instanceof F && r.options.pointStyle === "image";
1888
1888
  }
1889
1889
  /**
1890
1890
  * 几何未变时的轻量刷新:
@@ -1893,7 +1893,7 @@ class Wt {
1893
1893
  * - 文字:setText(内容 + 颜色 + 不透明度)/ setVisible(不重建图元)。
1894
1894
  */
1895
1895
  _refreshLightweight(e, t) {
1896
- if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof D) {
1896
+ if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof L) {
1897
1897
  const r = e.plot.options, {
1898
1898
  startArrowStyle: i,
1899
1899
  endArrowStyle: n
@@ -1952,7 +1952,7 @@ class Wt {
1952
1952
  if (i.length === 0) return null;
1953
1953
  const c = r;
1954
1954
  if (c.pointStyle === "image") {
1955
- const d = Lt(c);
1955
+ const d = Dt(c);
1956
1956
  return d ? (this._watchImageTexture(d), new F({
1957
1957
  position: i[0],
1958
1958
  shape: "image",
@@ -2047,8 +2047,8 @@ class Wt {
2047
2047
  arrowMode: d,
2048
2048
  startArrowStyle: f,
2049
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, k = Math.max(w * 4, 1), T = Math.max(w * 3, 0.8);
2051
- return new D({
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({
2052
2052
  points: i,
2053
2053
  strokeColor: c.strokeColor,
2054
2054
  strokeOpacity: o,
@@ -2060,8 +2060,8 @@ class Wt {
2060
2060
  startArrowStyle: f,
2061
2061
  endArrowStyle: v,
2062
2062
  arrowWidthMode: "world",
2063
- arrowLengthMeters: k,
2064
- arrowWidthMeters: T,
2063
+ arrowLengthMeters: T,
2064
+ arrowWidthMeters: k,
2065
2065
  dashLengthMeters: y,
2066
2066
  gapLengthMeters: m,
2067
2067
  renderOrder: t
@@ -2464,7 +2464,7 @@ class vr {
2464
2464
  boundingBoxResolver: (i) => Xt(this, i)
2465
2465
  }), Qe(), this._alphaClipMode = t.alphaClipMode ?? "alphaTest", this._currentTerrainConfig = {
2466
2466
  id: this.defaultTerrainId,
2467
- type: x.QUANTIZED_MESH,
2467
+ type: C.QUANTIZED_MESH,
2468
2468
  url: r
2469
2469
  }, this.terrainManager.add(this._currentTerrainConfig), this.terrainManager.setCurrentId(this._currentTerrainConfig.id), this.tiles = this._initTilesRenderer(this._currentTerrainConfig), this._initPlugins(this.tiles, this._currentTerrainConfig);
2470
2470
  }
@@ -2506,7 +2506,7 @@ class vr {
2506
2506
  * 是否使用 Cesium Ion 地形
2507
2507
  */
2508
2508
  get isCesiumIon() {
2509
- return this._currentTerrainConfig.type === x.CESIUM_ION;
2509
+ return this._currentTerrainConfig.type === C.CESIUM_ION;
2510
2510
  }
2511
2511
  /**
2512
2512
  * 获取当前地形配置
@@ -2552,7 +2552,7 @@ class vr {
2552
2552
  this._alphaClipMode = e, this.customMaterialPlugin && (this.customMaterialPlugin.alphaClipMode = e), this._updateAlphaClipMode(), this.render();
2553
2553
  }
2554
2554
  _initTilesRenderer(e) {
2555
- return e.type === x.CESIUM_ION ? new E() : (
2555
+ return e.type === C.CESIUM_ION ? new E() : (
2556
2556
  // Cesium Ion 由插件设置 URL
2557
2557
  new E(e.url)
2558
2558
  );
@@ -2562,7 +2562,7 @@ class vr {
2562
2562
  * @param config 地形配置
2563
2563
  */
2564
2564
  _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 === x.CESIUM_ION ? e.registerPlugin(
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
2566
  new Pe({
2567
2567
  apiToken: t.apiToken,
2568
2568
  assetId: t.assetId || "1",
@@ -2582,7 +2582,7 @@ class vr {
2582
2582
  return n.metadataAvailability = -1, new Response(JSON.stringify(n));
2583
2583
  }
2584
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 ke({
2585
+ }), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new et(), this.customMaterialPlugin.alphaClipMode = this._alphaClipMode, e.registerPlugin(this.customMaterialPlugin)), this.imageOverlayPlugin = new Te({
2586
2586
  renderer: this.ssp.viewport.renderer,
2587
2587
  overlays: []
2588
2588
  }), e.registerPlugin(this.imageOverlayPlugin), this._ensureGlobeDepth(), this.overlayManager = new B(
@@ -2646,7 +2646,7 @@ class vr {
2646
2646
  setTerrain(e, t = void 0) {
2647
2647
  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
2648
  const r = this.terrainManager.getCurrent();
2649
- e.type === x.QUANTIZED_MESH && r?.type === x.QUANTIZED_MESH && (r.url = e.url);
2649
+ e.type === C.QUANTIZED_MESH && r?.type === C.QUANTIZED_MESH && (r.url = e.url);
2650
2650
  }
2651
2651
  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
2652
  }
@@ -2995,6 +2995,8 @@ class tr {
2995
2995
  // 用于模型居中
2996
2996
  _box = new te();
2997
2997
  _sphere = new G();
2998
+ _worldToEllipsoidMatrix = new g();
2999
+ _ellipsoidPosition = new a();
2998
3000
  // 当前材质类型
2999
3001
  _materialType = P.DEFAULT;
3000
3002
  // 按需渲染标志
@@ -3160,6 +3162,35 @@ class tr {
3160
3162
  (e) => this.tiles.removeEventListener("load-root-tileset", e)
3161
3163
  ), this.loedTilesSets.clear(), this.tiles.removeEventListener("load-model", this.onLoadModel), this.tiles.removeEventListener("dispose-model", this.onDisposeModel), this.options._managedByPlugin || (this.tiles.removeEventListener("load-model", this._onNeedsRender), this.tiles.removeEventListener("needs-render", this._onNeedsRender), this.tiles.removeEventListener("needs-update", this._onNeedsRender)), this.tiles.dispose();
3162
3164
  }
3165
+ /**
3166
+ * 将经纬高(经纬度为度,高程为米)转换为 SoonSpace 世界坐标。
3167
+ * 椭球坐标先转换到 tiles 局部坐标,再应用 tiles.group 的世界矩阵。
3168
+ * @param lon 经度,单位:度
3169
+ * @param lat 纬度,单位:度
3170
+ * @param height 椭球高,单位:米
3171
+ * @param target 用于接收结果的向量;传入后会被原地修改并返回
3172
+ */
3173
+ lonLatHeightToPosition(e, t, r = 0, i = new a()) {
3174
+ const n = p.degToRad(t), o = p.degToRad(e);
3175
+ return this.tiles.ellipsoid.getCartographicToPosition(
3176
+ n,
3177
+ o,
3178
+ r,
3179
+ i
3180
+ ), this.tiles.group.updateWorldMatrix(!0, !1), i.applyMatrix4(this.tiles.group.matrixWorld);
3181
+ }
3182
+ /**
3183
+ * 将 SoonSpace 世界坐标转换为经纬高(经纬度为度,高程为米)。
3184
+ * 输入向量不会被修改;转换时会先逆变换到 tiles 椭球局部坐标。
3185
+ * @param position SoonSpace 世界坐标
3186
+ * @param target 用于接收结果的对象;传入后会被原地修改并返回
3187
+ */
3188
+ positionToLonLatHeight(e, t = { lon: 0, lat: 0, height: 0 }) {
3189
+ 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
+ this._ellipsoidPosition,
3191
+ t
3192
+ ), t.lon = p.radToDeg(t.lon), t.lat = p.radToDeg(t.lat), t;
3193
+ }
3163
3194
  }
3164
3195
  const H = 2;
3165
3196
  class wr {
@@ -3228,7 +3259,7 @@ class wr {
3228
3259
  async loadTiles(e) {
3229
3260
  const t = "url" in e ? e.url : e.assetId;
3230
3261
  if (this.tilesMap.has(t))
3231
- return L.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
3262
+ return D.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
3232
3263
  const { ssp: r } = this, i = this._getReferencePlacement(e), n = this._getTilesRendererOptions(e, i), o = new tr(r, {
3233
3264
  ...n,
3234
3265
  _managedByPlugin: !0
@@ -3288,7 +3319,7 @@ class wr {
3288
3319
  }
3289
3320
  applyReferencePlacement(e, t) {
3290
3321
  if (!this._referenceOrigin)
3291
- return L.utils.warn("TilesRendererManager: reference origin is not set."), !1;
3322
+ return D.utils.warn("TilesRendererManager: reference origin is not set."), !1;
3292
3323
  const { ellipsoid: r, group: i } = e.tiles, n = this._referenceOrigin, o = this._isGeoreferenced(e);
3293
3324
  if (r.getObjectFrame(
3294
3325
  p.degToRad(n.lat),
@@ -3432,7 +3463,7 @@ function rr(s) {
3432
3463
  function Or(s) {
3433
3464
  return Math.pow(rr(s), 0.99);
3434
3465
  }
3435
- function De(s, e) {
3466
+ function Le(s, e) {
3436
3467
  return [(s[0] + e[0]) / 2, (s[1] + e[1]) / 2];
3437
3468
  }
3438
3469
  function ee(s, e) {
@@ -3471,10 +3502,10 @@ function sr(s) {
3471
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]);
3472
3503
  let h;
3473
3504
  if (l > ne) {
3474
- const c = De(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, k = 2 * y * m, T = m * m - y * y, A = n[0] - c[0], R = n[1] - c[1];
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];
3475
3506
  h = [
3476
- c[0] + w * A + k * R,
3477
- c[1] + k * A + T * R
3507
+ c[0] + w * A + T * R,
3508
+ c[1] + T * A + k * R
3478
3509
  ];
3479
3510
  } else
3480
3511
  h = [
@@ -3490,10 +3521,10 @@ function nr(s) {
3490
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]);
3491
3522
  let c;
3492
3523
  if (h > ne) {
3493
- const d = De(r, i), f = i[0] - d[0], v = i[1] - d[1], y = 2 / I(r, i), m = -y * v, w = y * f, k = m * m - w * w, T = 2 * m * w, A = w * w - m * m, R = o[0] - d[0], le = o[1] - d[1];
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];
3494
3525
  c = [
3495
- d[0] + k * R + T * le,
3496
- d[1] + T * R + A * le
3526
+ d[0] + T * R + k * le,
3527
+ d[1] + k * R + A * le
3497
3528
  ];
3498
3529
  } else
3499
3530
  c = [
@@ -3502,7 +3533,7 @@ function nr(s) {
3502
3533
  ];
3503
3534
  return c;
3504
3535
  }
3505
- function Cr(s, e) {
3536
+ function xr(s, e) {
3506
3537
  const r = [sr(e)];
3507
3538
  for (let o = 0; o < e.length - 2; o++) {
3508
3539
  const l = e[o], h = e[o + 1], c = e[o + 2], d = ae(s, l, h, c);
@@ -3522,7 +3553,7 @@ function Cr(s, e) {
3522
3553
  }
3523
3554
  return n;
3524
3555
  }
3525
- function xr(s) {
3556
+ function Cr(s) {
3526
3557
  if (s.length <= 2) return s;
3527
3558
  const e = 2, t = [], r = s.length - e - 1;
3528
3559
  t.push(s[0]);
@@ -3540,10 +3571,10 @@ function xr(s) {
3540
3571
  function or(s, e) {
3541
3572
  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;
3542
3573
  }
3543
- function kr(s, e) {
3574
+ function Tr(s, e) {
3544
3575
  return Y(s, e);
3545
3576
  }
3546
- function Tr(s, e) {
3577
+ function kr(s, e) {
3547
3578
  return Ne(s, e);
3548
3579
  }
3549
3580
  function Pr(s) {
@@ -3561,7 +3592,7 @@ export {
3561
3592
  mr as EMERGENCY_RESOURCE_ONTOLOGY_IDS,
3562
3593
  Se as FITTING_COUNT,
3563
3594
  ct as GisPlotArrow,
3564
- C as GisPlotBase,
3595
+ x as GisPlotBase,
3565
3596
  ut as GisPlotCircle,
3566
3597
  st as GisPlotLine,
3567
3598
  it as GisPlotPoint,
@@ -3572,21 +3603,21 @@ export {
3572
3603
  zt as GroundDecalManager,
3573
3604
  P as MaterialType,
3574
3605
  I as MathDistance,
3575
- De as Mid,
3606
+ Le as Mid,
3576
3607
  B as OverlayManager,
3577
3608
  u as OverlayType,
3578
3609
  Wt as PlotPrimitiveBridge,
3579
3610
  vr as TerrainTilesRenderer,
3580
- x as TerrainType,
3611
+ C as TerrainType,
3581
3612
  et as TileCustomMaterialPlugin,
3582
3613
  tr as TilesRenderer,
3583
3614
  wr as TilesRendererManager,
3584
3615
  ne as ZERO_TOLERANCE,
3585
3616
  Xt as computePlotBoundingBox,
3586
- Tr as createAssaultDirectionArrow,
3617
+ kr as createAssaultDirectionArrow,
3587
3618
  Pr as createAttackArrow,
3588
3619
  Ir as createCurvedArrow,
3589
- kr as createFineArrow,
3620
+ Tr as createFineArrow,
3590
3621
  Er as createSwallowtailAttackArrow,
3591
3622
  pr as default,
3592
3623
  Vt as flyToPlotById,
@@ -3594,16 +3625,16 @@ export {
3594
3625
  ee as getAzimuth,
3595
3626
  Or as getBaseLength,
3596
3627
  ae as getBisectorNormals,
3597
- Cr as getCurvePoints,
3628
+ xr as getCurvePoints,
3598
3629
  oe as getNormal,
3599
- xr as getQBSplinePoints,
3630
+ Cr as getQBSplinePoints,
3600
3631
  br as getThirdPoint,
3601
3632
  ir as isClockWise,
3602
3633
  _r as parseColorToRGBA,
3603
3634
  yt as plotOrderToRenderOrder,
3604
- Dt as resolveEmergencyResourceIcon,
3635
+ Lt as resolveEmergencyResourceIcon,
3605
3636
  Mr as resolveOpacity,
3606
- Lt as resolvePlotPointImageUrl,
3637
+ Dt as resolvePlotPointImageUrl,
3607
3638
  ft as sanitizePlotOrder,
3608
3639
  rr as wholeDistance
3609
3640
  };
@@ -1,4 +1,4 @@
1
- import { Object3D } from 'three';
1
+ import { Object3D, Vector3 } from 'three';
2
2
  import { TilesRenderer as TilesInstance } from 'um-3d-tiles-renderer';
3
3
  import { TilesFadePlugin, UpdateOnChangePlugin, ReorientationPlugin } from 'um-3d-tiles-renderer/plugins';
4
4
  import { default as SoonSpace } from 'soonspacejs';
@@ -49,6 +49,11 @@ export interface ICesiumIonOptions extends ITilesRendererBaseOptions {
49
49
  /** 是否自动刷新 Token,默认 true */
50
50
  autoRefreshToken?: boolean;
51
51
  }
52
+ export interface LonLatHeight {
53
+ lon: number;
54
+ lat: number;
55
+ height: number;
56
+ }
52
57
  export declare class TilesRenderer {
53
58
  readonly ssp: SoonSpace;
54
59
  tiles: TilesInstance;
@@ -58,6 +63,8 @@ export declare class TilesRenderer {
58
63
  options: ITilesRendererOptions | ICesiumIonOptions;
59
64
  private _box;
60
65
  private _sphere;
66
+ private _worldToEllipsoidMatrix;
67
+ private _ellipsoidPosition;
61
68
  private _materialType;
62
69
  private _needsUpdate;
63
70
  private _cameraTransitionStart;
@@ -94,14 +101,14 @@ export declare class TilesRenderer {
94
101
  /**
95
102
  * 模型加载时保存原始材质
96
103
  */
97
- onLoadModel: ({ scene, }: {
104
+ onLoadModel: ({ scene }: {
98
105
  scene: Object3D;
99
106
  }) => void;
100
107
  /**
101
108
  * 更新场景中所有网格的材质(参考 customMaterial.js)
102
109
  */
103
110
  updateMaterial: (scene: Object3D) => void;
104
- onDisposeModel: ({ scene, }: {
111
+ onDisposeModel: ({ scene }: {
105
112
  scene: Object3D;
106
113
  }) => void;
107
114
  /**
@@ -117,4 +124,20 @@ export declare class TilesRenderer {
117
124
  disable(): void;
118
125
  invalidate(lon: number, lat: number, alt: number): () => void;
119
126
  dispose(): void;
127
+ /**
128
+ * 将经纬高(经纬度为度,高程为米)转换为 SoonSpace 世界坐标。
129
+ * 椭球坐标先转换到 tiles 局部坐标,再应用 tiles.group 的世界矩阵。
130
+ * @param lon 经度,单位:度
131
+ * @param lat 纬度,单位:度
132
+ * @param height 椭球高,单位:米
133
+ * @param target 用于接收结果的向量;传入后会被原地修改并返回
134
+ */
135
+ lonLatHeightToPosition(lon: number, lat: number, height?: number, target?: Vector3): Vector3;
136
+ /**
137
+ * 将 SoonSpace 世界坐标转换为经纬高(经纬度为度,高程为米)。
138
+ * 输入向量不会被修改;转换时会先逆变换到 tiles 椭球局部坐标。
139
+ * @param position SoonSpace 世界坐标
140
+ * @param target 用于接收结果的对象;传入后会被原地修改并返回
141
+ */
142
+ positionToLonLatHeight(position: Vector3, target?: LonLatHeight): LonLatHeight;
120
143
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@soonspacejs/plugin-tiles",
3
3
  "pluginName": "TilesPlugin",
4
- "version": "2.15.17",
4
+ "version": "2.15.18",
5
5
  "description": "3D Tiles plugin for SoonSpace.js",
6
6
  "main": "dist/index.esm.js",
7
7
  "module": "dist/index.esm.js",
@@ -22,6 +22,6 @@
22
22
  "three": "^0.183.0",
23
23
  "@mapbox/geojson-merge": "^1.1.1",
24
24
  "cesium-to-three": "0.2.4",
25
- "soonspacejs": "2.15.17"
25
+ "soonspacejs": "2.15.18"
26
26
  }
27
27
  }