@soonspacejs/plugin-tiles 2.15.17 → 2.15.19
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 +98 -67
- package/dist/tiles-renderer/TilesRenderer.d.ts +26 -3
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
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
|
|
5
|
-
import { TilesFadePlugin as re, UpdateOnChangePlugin as ie, QuantizedMeshPlugin as Q, ImageOverlayPlugin as
|
|
6
|
-
import { CesiumGroundTextPrimitive as N, CesiumGroundPolylinePrimitive as
|
|
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(`${
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 || {}),
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
1732
|
+
FireWaterReservoir: kt,
|
|
1733
1733
|
NaturalWater: It,
|
|
1734
1734
|
HospitalResourcePoint: Pt,
|
|
1735
1735
|
PublicSecurityResourcePoint: Ft,
|
|
1736
|
-
SupportMaterialPoint:
|
|
1737
|
-
FireStation:
|
|
1738
|
-
LinkageUnit:
|
|
1736
|
+
SupportMaterialPoint: Ct,
|
|
1737
|
+
FireStation: Tt,
|
|
1738
|
+
LinkageUnit: xt
|
|
1739
1739
|
}, mr = Object.freeze(
|
|
1740
1740
|
Object.keys(K)
|
|
1741
1741
|
);
|
|
1742
|
-
function
|
|
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
|
|
1750
|
-
return s.imageUrl?.trim() ||
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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,
|
|
2051
|
-
return new
|
|
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:
|
|
2064
|
-
arrowWidthMeters:
|
|
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:
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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
|
|
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 ===
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 +
|
|
3477
|
-
c[1] +
|
|
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 =
|
|
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] +
|
|
3496
|
-
d[1] +
|
|
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
|
|
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
|
|
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
|
|
3574
|
+
function Tr(s, e) {
|
|
3544
3575
|
return Y(s, e);
|
|
3545
3576
|
}
|
|
3546
|
-
function
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3617
|
+
kr as createAssaultDirectionArrow,
|
|
3587
3618
|
Pr as createAttackArrow,
|
|
3588
3619
|
Ir as createCurvedArrow,
|
|
3589
|
-
|
|
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
|
-
|
|
3628
|
+
xr as getCurvePoints,
|
|
3598
3629
|
oe as getNormal,
|
|
3599
|
-
|
|
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
|
-
|
|
3635
|
+
Lt as resolveEmergencyResourceIcon,
|
|
3605
3636
|
Mr as resolveOpacity,
|
|
3606
|
-
|
|
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.
|
|
4
|
+
"version": "2.15.19",
|
|
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.
|
|
25
|
+
"soonspacejs": "2.15.19"
|
|
26
26
|
}
|
|
27
27
|
}
|