@vcmap/core 6.2.4 → 6.3.0-rc.2

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.
Files changed (378) hide show
  1. package/dist/cesium.d.ts +12 -0
  2. package/dist/index.d.ts +13 -3
  3. package/dist/index.js +11 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/ol.d.ts +13 -2
  6. package/dist/src/category/category.d.ts +1 -1
  7. package/dist/src/category/category.js +3 -4
  8. package/dist/src/category/category.js.map +1 -1
  9. package/dist/src/cesium/cesium3DTileFeature.d.ts +1 -0
  10. package/dist/src/cesium/cesium3DTileFeature.js +14 -3
  11. package/dist/src/cesium/cesium3DTileFeature.js.map +1 -1
  12. package/dist/src/cesium/cesium3DTilePointFeature.js +2 -1
  13. package/dist/src/cesium/cesium3DTilePointFeature.js.map +1 -1
  14. package/dist/src/classRegistry.d.ts +7 -1
  15. package/dist/src/classRegistry.js.map +1 -1
  16. package/dist/src/featureProvider/abstractAttributeProvider.d.ts +62 -0
  17. package/dist/src/featureProvider/abstractAttributeProvider.js +129 -0
  18. package/dist/src/featureProvider/abstractAttributeProvider.js.map +1 -0
  19. package/dist/src/featureProvider/abstractFeatureProvider.d.ts +10 -19
  20. package/dist/src/featureProvider/abstractFeatureProvider.js +10 -42
  21. package/dist/src/featureProvider/abstractFeatureProvider.js.map +1 -1
  22. package/dist/src/featureProvider/compositeFeatureProvider.d.ts +27 -0
  23. package/dist/src/featureProvider/compositeFeatureProvider.js +53 -0
  24. package/dist/src/featureProvider/compositeFeatureProvider.js.map +1 -0
  25. package/dist/src/featureProvider/csvAttributeProvider.d.ts +41 -0
  26. package/dist/src/featureProvider/csvAttributeProvider.js +126 -0
  27. package/dist/src/featureProvider/csvAttributeProvider.js.map +1 -0
  28. package/dist/src/featureProvider/featureProviderFactory.d.ts +3 -0
  29. package/dist/src/featureProvider/featureProviderFactory.js +17 -0
  30. package/dist/src/featureProvider/featureProviderFactory.js.map +1 -0
  31. package/dist/src/featureProvider/i3sAttributeProvider.d.ts +7 -0
  32. package/dist/src/featureProvider/i3sAttributeProvider.js +43 -0
  33. package/dist/src/featureProvider/i3sAttributeProvider.js.map +1 -0
  34. package/dist/src/featureProvider/jsonAttributeProvider.d.ts +26 -0
  35. package/dist/src/featureProvider/jsonAttributeProvider.js +73 -0
  36. package/dist/src/featureProvider/jsonAttributeProvider.js.map +1 -0
  37. package/dist/src/featureProvider/tileProviderFeatureProvider.d.ts +4 -6
  38. package/dist/src/featureProvider/tileProviderFeatureProvider.js +9 -11
  39. package/dist/src/featureProvider/tileProviderFeatureProvider.js.map +1 -1
  40. package/dist/src/featureProvider/urlIdAttributeProvider.d.ts +28 -0
  41. package/dist/src/featureProvider/urlIdAttributeProvider.js +50 -0
  42. package/dist/src/featureProvider/urlIdAttributeProvider.js.map +1 -0
  43. package/dist/src/featureProvider/wmsFeatureProvider.d.ts +13 -4
  44. package/dist/src/featureProvider/wmsFeatureProvider.js +19 -9
  45. package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
  46. package/dist/src/interaction/coordinateAtPixel.js +4 -6
  47. package/dist/src/interaction/coordinateAtPixel.js.map +1 -1
  48. package/dist/src/interaction/ensurePositionInteraction.d.ts +14 -0
  49. package/dist/src/interaction/ensurePositionInteraction.js +42 -0
  50. package/dist/src/interaction/ensurePositionInteraction.js.map +1 -0
  51. package/dist/src/interaction/eventHandler.d.ts +3 -0
  52. package/dist/src/interaction/eventHandler.js +10 -1
  53. package/dist/src/interaction/eventHandler.js.map +1 -1
  54. package/dist/src/interaction/featureAtPixelInteraction.d.ts +15 -3
  55. package/dist/src/interaction/featureAtPixelInteraction.js +70 -18
  56. package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
  57. package/dist/src/interaction/featureProviderInteraction.js +42 -26
  58. package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
  59. package/dist/src/interaction/panoramaImageSelection.js +2 -2
  60. package/dist/src/interaction/panoramaImageSelection.js.map +1 -1
  61. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.d.ts +17 -9
  62. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js +244 -165
  63. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js.map +1 -1
  64. package/dist/src/layer/cesium/i3sCesiumImpl.d.ts +33 -0
  65. package/dist/src/layer/cesium/i3sCesiumImpl.js +107 -0
  66. package/dist/src/layer/cesium/i3sCesiumImpl.js.map +1 -0
  67. package/dist/src/layer/cesium/rasterLayerCesiumImpl.d.ts +3 -3
  68. package/dist/src/layer/cesium/rasterLayerCesiumImpl.js.map +1 -1
  69. package/dist/src/layer/cesium/terrainCesiumImpl.d.ts +3 -3
  70. package/dist/src/layer/cesium/terrainCesiumImpl.js.map +1 -1
  71. package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js +2 -1
  72. package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js.map +1 -1
  73. package/dist/src/layer/cesium/vectorContext.js +1 -1
  74. package/dist/src/layer/cesium/vectorContext.js.map +1 -1
  75. package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js +7 -6
  76. package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js.map +1 -1
  77. package/dist/src/layer/cesium/vectorTileImageryProvider.js +2 -2
  78. package/dist/src/layer/cesium/vectorTileImageryProvider.js.map +1 -1
  79. package/dist/src/layer/cesiumTilesetLayer.d.ts +10 -1
  80. package/dist/src/layer/cesiumTilesetLayer.js +33 -8
  81. package/dist/src/layer/cesiumTilesetLayer.js.map +1 -1
  82. package/dist/src/layer/cogLayer.d.ts +1 -1
  83. package/dist/src/layer/cogLayer.js +3 -4
  84. package/dist/src/layer/cogLayer.js.map +1 -1
  85. package/dist/src/layer/czmlLayer.d.ts +1 -1
  86. package/dist/src/layer/czmlLayer.js +4 -4
  87. package/dist/src/layer/czmlLayer.js.map +1 -1
  88. package/dist/src/layer/featureLayer.d.ts +1 -6
  89. package/dist/src/layer/featureLayer.js +3 -10
  90. package/dist/src/layer/featureLayer.js.map +1 -1
  91. package/dist/src/layer/featureStoreLayer.d.ts +3 -2
  92. package/dist/src/layer/featureStoreLayer.js +5 -5
  93. package/dist/src/layer/featureStoreLayer.js.map +1 -1
  94. package/dist/src/layer/flatGeobufLayer.d.ts +2 -0
  95. package/dist/src/layer/flatGeobufLayer.js +8 -0
  96. package/dist/src/layer/flatGeobufLayer.js.map +1 -1
  97. package/dist/src/layer/geojsonLayer.d.ts +1 -1
  98. package/dist/src/layer/geojsonLayer.js +5 -12
  99. package/dist/src/layer/geojsonLayer.js.map +1 -1
  100. package/dist/src/layer/i3sLayer.d.ts +80 -0
  101. package/dist/src/layer/i3sLayer.js +242 -0
  102. package/dist/src/layer/i3sLayer.js.map +1 -0
  103. package/dist/src/layer/layer.d.ts +29 -10
  104. package/dist/src/layer/layer.js +114 -34
  105. package/dist/src/layer/layer.js.map +1 -1
  106. package/dist/src/layer/layerSymbols.d.ts +4 -0
  107. package/dist/src/layer/layerSymbols.js +4 -0
  108. package/dist/src/layer/layerSymbols.js.map +1 -1
  109. package/dist/src/layer/openStreetMapLayer.d.ts +1 -1
  110. package/dist/src/layer/openStreetMapLayer.js +11 -6
  111. package/dist/src/layer/openStreetMapLayer.js.map +1 -1
  112. package/dist/src/layer/panorama/vectorPanoramaImpl.d.ts +38 -0
  113. package/dist/src/layer/panorama/vectorPanoramaImpl.js +164 -0
  114. package/dist/src/layer/panorama/vectorPanoramaImpl.js.map +1 -0
  115. package/dist/src/layer/panoramaDatasetLayer.d.ts +7 -3
  116. package/dist/src/layer/panoramaDatasetLayer.js +46 -20
  117. package/dist/src/layer/panoramaDatasetLayer.js.map +1 -1
  118. package/dist/src/layer/pointCloudLayer.d.ts +1 -5
  119. package/dist/src/layer/pointCloudLayer.js +3 -15
  120. package/dist/src/layer/pointCloudLayer.js.map +1 -1
  121. package/dist/src/layer/rasterLayer.d.ts +1 -1
  122. package/dist/src/layer/rasterLayer.js +4 -4
  123. package/dist/src/layer/rasterLayer.js.map +1 -1
  124. package/dist/src/layer/singleImageLayer.d.ts +1 -1
  125. package/dist/src/layer/singleImageLayer.js +3 -3
  126. package/dist/src/layer/singleImageLayer.js.map +1 -1
  127. package/dist/src/layer/terrainLayer.d.ts +1 -1
  128. package/dist/src/layer/terrainLayer.js +8 -6
  129. package/dist/src/layer/terrainLayer.js.map +1 -1
  130. package/dist/src/layer/tileProvider/flatGeobufTileProvider.d.ts +1 -1
  131. package/dist/src/layer/tileProvider/flatGeobufTileProvider.js +7 -5
  132. package/dist/src/layer/tileProvider/flatGeobufTileProvider.js.map +1 -1
  133. package/dist/src/layer/tileProvider/mvtTileProvider.d.ts +1 -1
  134. package/dist/src/layer/tileProvider/mvtTileProvider.js +6 -5
  135. package/dist/src/layer/tileProvider/mvtTileProvider.js.map +1 -1
  136. package/dist/src/layer/tileProvider/staticFeatureTileProvider.d.ts +1 -1
  137. package/dist/src/layer/tileProvider/staticFeatureTileProvider.js +3 -3
  138. package/dist/src/layer/tileProvider/staticFeatureTileProvider.js.map +1 -1
  139. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.d.ts +1 -1
  140. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.js +7 -4
  141. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.js.map +1 -1
  142. package/dist/src/layer/tileProvider/tileProvider.d.ts +7 -1
  143. package/dist/src/layer/tileProvider/tileProvider.js +15 -5
  144. package/dist/src/layer/tileProvider/tileProvider.js.map +1 -1
  145. package/dist/src/layer/tileProvider/urlTemplateTileProvider.d.ts +1 -1
  146. package/dist/src/layer/tileProvider/urlTemplateTileProvider.js +3 -3
  147. package/dist/src/layer/tileProvider/urlTemplateTileProvider.js.map +1 -1
  148. package/dist/src/layer/tmsLayer.d.ts +1 -1
  149. package/dist/src/layer/tmsLayer.js +3 -10
  150. package/dist/src/layer/tmsLayer.js.map +1 -1
  151. package/dist/src/layer/vectorLayer.d.ts +11 -5
  152. package/dist/src/layer/vectorLayer.js +21 -10
  153. package/dist/src/layer/vectorLayer.js.map +1 -1
  154. package/dist/src/layer/vectorProperties.js +10 -1
  155. package/dist/src/layer/vectorProperties.js.map +1 -1
  156. package/dist/src/layer/vectorTileLayer.d.ts +14 -5
  157. package/dist/src/layer/vectorTileLayer.js +82 -31
  158. package/dist/src/layer/vectorTileLayer.js.map +1 -1
  159. package/dist/src/layer/wfsLayer.d.ts +1 -1
  160. package/dist/src/layer/wfsLayer.js +5 -4
  161. package/dist/src/layer/wfsLayer.js.map +1 -1
  162. package/dist/src/layer/wmsLayer.d.ts +4 -1
  163. package/dist/src/layer/wmsLayer.js +65 -36
  164. package/dist/src/layer/wmsLayer.js.map +1 -1
  165. package/dist/src/layer/wmtsLayer.d.ts +1 -1
  166. package/dist/src/layer/wmtsLayer.js +3 -10
  167. package/dist/src/layer/wmtsLayer.js.map +1 -1
  168. package/dist/src/map/baseCesiumMap.d.ts +69 -0
  169. package/dist/src/map/baseCesiumMap.js +393 -0
  170. package/dist/src/map/baseCesiumMap.js.map +1 -0
  171. package/dist/src/map/cesiumMap.d.ts +6 -98
  172. package/dist/src/map/cesiumMap.js +29 -266
  173. package/dist/src/map/cesiumMap.js.map +1 -1
  174. package/dist/src/map/obliqueMap.d.ts +1 -1
  175. package/dist/src/map/obliqueMap.js +14 -8
  176. package/dist/src/map/obliqueMap.js.map +1 -1
  177. package/dist/src/map/openlayersMap.d.ts +1 -1
  178. package/dist/src/map/openlayersMap.js +3 -4
  179. package/dist/src/map/openlayersMap.js.map +1 -1
  180. package/dist/src/map/panoramaMap.d.ts +17 -29
  181. package/dist/src/map/panoramaMap.js +56 -100
  182. package/dist/src/map/panoramaMap.js.map +1 -1
  183. package/dist/src/map/vcsMap.d.ts +15 -2
  184. package/dist/src/map/vcsMap.js +26 -3
  185. package/dist/src/map/vcsMap.js.map +1 -1
  186. package/dist/src/oblique/obliqueCollection.d.ts +1 -1
  187. package/dist/src/oblique/obliqueCollection.js +3 -4
  188. package/dist/src/oblique/obliqueCollection.js.map +1 -1
  189. package/dist/src/panorama/panoramaCameraController.d.ts +4 -0
  190. package/dist/src/panorama/panoramaCameraController.js +8 -0
  191. package/dist/src/panorama/panoramaCameraController.js.map +1 -1
  192. package/dist/src/panorama/panoramaImage.d.ts +10 -1
  193. package/dist/src/panorama/panoramaImage.js +15 -9
  194. package/dist/src/panorama/panoramaImage.js.map +1 -1
  195. package/dist/src/panorama/panoramaImageView.d.ts +6 -1
  196. package/dist/src/panorama/panoramaImageView.js +11 -2
  197. package/dist/src/panorama/panoramaImageView.js.map +1 -1
  198. package/dist/src/panorama/panoramaTileMaterial.d.ts +6 -0
  199. package/dist/src/panorama/panoramaTileMaterial.js +14 -0
  200. package/dist/src/panorama/panoramaTileMaterial.js.map +1 -1
  201. package/dist/src/panorama/panoramaTileMaterialFS.shader.d.ts +1 -1
  202. package/dist/src/panorama/panoramaTileMaterialFS.shader.js +16 -1
  203. package/dist/src/panorama/panoramaTileMaterialFS.shader.js.map +1 -1
  204. package/dist/src/panorama/panoramaTilePrimitiveCollection.d.ts +6 -0
  205. package/dist/src/panorama/panoramaTilePrimitiveCollection.js +28 -0
  206. package/dist/src/panorama/panoramaTilePrimitiveCollection.js.map +1 -1
  207. package/dist/src/style/declarativeStyleItem.js +7 -8
  208. package/dist/src/style/declarativeStyleItem.js.map +1 -1
  209. package/dist/src/util/clipping/clippingPolygonObject.d.ts +1 -1
  210. package/dist/src/util/clipping/clippingPolygonObject.js +3 -4
  211. package/dist/src/util/clipping/clippingPolygonObject.js.map +1 -1
  212. package/dist/src/util/displayQuality/displayQuality.js +4 -4
  213. package/dist/src/util/displayQuality/displayQuality.js.map +1 -1
  214. package/dist/src/util/editor/createFeatureSession.js +3 -1
  215. package/dist/src/util/editor/createFeatureSession.js.map +1 -1
  216. package/dist/src/util/editor/editFeaturesSession.js +9 -2
  217. package/dist/src/util/editor/editFeaturesSession.js.map +1 -1
  218. package/dist/src/util/editor/editGeometrySession.js +3 -1
  219. package/dist/src/util/editor/editGeometrySession.js.map +1 -1
  220. package/dist/src/util/editor/editorSessionHelpers.d.ts +3 -3
  221. package/dist/src/util/editor/editorSessionHelpers.js +4 -2
  222. package/dist/src/util/editor/editorSessionHelpers.js.map +1 -1
  223. package/dist/src/util/editor/interactions/creationSnapping.js +4 -1
  224. package/dist/src/util/editor/interactions/creationSnapping.js.map +1 -1
  225. package/dist/src/util/editor/interactions/ensureHandlerSelectionInteraction.js +2 -2
  226. package/dist/src/util/editor/interactions/ensureHandlerSelectionInteraction.js.map +1 -1
  227. package/dist/src/util/editor/interactions/layerSnapping.js +4 -1
  228. package/dist/src/util/editor/interactions/layerSnapping.js.map +1 -1
  229. package/dist/src/util/editor/interactions/mapInteractionController.js +12 -1
  230. package/dist/src/util/editor/interactions/mapInteractionController.js.map +1 -1
  231. package/dist/src/util/editor/interactions/translationSnapping.js +4 -2
  232. package/dist/src/util/editor/interactions/translationSnapping.js.map +1 -1
  233. package/dist/src/util/editor/selectFeaturesSession.js +1 -1
  234. package/dist/src/util/editor/selectFeaturesSession.js.map +1 -1
  235. package/dist/src/util/editor/transformation/create3DHandlers.d.ts +2 -2
  236. package/dist/src/util/editor/transformation/create3DHandlers.js.map +1 -1
  237. package/dist/src/util/editor/transformation/transformationHandler.js +5 -2
  238. package/dist/src/util/editor/transformation/transformationHandler.js.map +1 -1
  239. package/dist/src/util/editor/transformation/translateInteraction.js +2 -2
  240. package/dist/src/util/editor/transformation/translateInteraction.js.map +1 -1
  241. package/dist/src/util/fetch.d.ts +7 -0
  242. package/dist/src/util/fetch.js +7 -0
  243. package/dist/src/util/fetch.js.map +1 -1
  244. package/dist/src/util/flight/flightInstance.d.ts +1 -1
  245. package/dist/src/util/flight/flightInstance.js +3 -4
  246. package/dist/src/util/flight/flightInstance.js.map +1 -1
  247. package/dist/src/util/mapCollection.d.ts +5 -0
  248. package/dist/src/util/mapCollection.js +14 -0
  249. package/dist/src/util/mapCollection.js.map +1 -1
  250. package/dist/src/util/renderScreenshot.js +2 -3
  251. package/dist/src/util/renderScreenshot.js.map +1 -1
  252. package/dist/src/util/viewpoint.js +1 -1
  253. package/dist/src/util/viewpoint.js.map +1 -1
  254. package/dist/src/vcsApp.d.ts +2 -3
  255. package/dist/src/vcsApp.js.map +1 -1
  256. package/dist/src/vcsModuleHelpers.d.ts +5 -2
  257. package/dist/src/vcsModuleHelpers.js +27 -1
  258. package/dist/src/vcsModuleHelpers.js.map +1 -1
  259. package/dist/src/vcsObject.d.ts +2 -1
  260. package/dist/src/vcsObject.js +9 -1
  261. package/dist/src/vcsObject.js.map +1 -1
  262. package/dist/src/vectorCluster/vectorClusterGroup.d.ts +1 -1
  263. package/dist/src/vectorCluster/vectorClusterGroup.js +3 -4
  264. package/dist/src/vectorCluster/vectorClusterGroup.js.map +1 -1
  265. package/dist/src/vectorCluster/vectorClusterStyleItem.d.ts +1 -1
  266. package/dist/src/vectorCluster/vectorClusterStyleItem.js +3 -4
  267. package/dist/src/vectorCluster/vectorClusterStyleItem.js.map +1 -1
  268. package/dist/tests/unit/helpers/cesiumHelpers.d.ts +11 -1
  269. package/dist/tests/unit/helpers/cesiumHelpers.js +26 -3
  270. package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
  271. package/dist/tests/unit/helpers/panoramaHelpers.js +1 -1
  272. package/dist/tests/unit/helpers/panoramaHelpers.js.map +1 -1
  273. package/index.ts +30 -5
  274. package/package.json +3 -3
  275. package/src/category/category.ts +3 -4
  276. package/src/cesium/cesium.d.ts +12 -0
  277. package/src/cesium/cesium3DTileFeature.ts +23 -3
  278. package/src/cesium/cesium3DTilePointFeature.ts +3 -1
  279. package/src/classRegistry.ts +8 -3
  280. package/src/featureProvider/abstractAttributeProvider.ts +201 -0
  281. package/src/featureProvider/abstractFeatureProvider.ts +32 -51
  282. package/src/featureProvider/compositeFeatureProvider.ts +103 -0
  283. package/src/featureProvider/csvAttributeProvider.ts +186 -0
  284. package/src/featureProvider/featureProviderFactory.ts +31 -0
  285. package/src/featureProvider/i3sAttributeProvider.ts +60 -0
  286. package/src/featureProvider/jsonAttributeProvider.ts +109 -0
  287. package/src/featureProvider/tileProviderFeatureProvider.ts +13 -14
  288. package/src/featureProvider/urlIdAttributeProvider.ts +82 -0
  289. package/src/featureProvider/wmsFeatureProvider.ts +31 -10
  290. package/src/global.d.ts +2 -0
  291. package/src/interaction/coordinateAtPixel.ts +4 -6
  292. package/src/interaction/ensurePositionInteraction.ts +50 -0
  293. package/src/interaction/eventHandler.ts +12 -1
  294. package/src/interaction/featureAtPixelInteraction.ts +92 -32
  295. package/src/interaction/featureProviderInteraction.ts +59 -38
  296. package/src/interaction/panoramaImageSelection.ts +4 -2
  297. package/src/layer/cesium/cesiumTilesetCesiumImpl.ts +297 -197
  298. package/src/layer/cesium/i3sCesiumImpl.ts +141 -0
  299. package/src/layer/cesium/rasterLayerCesiumImpl.ts +3 -3
  300. package/src/layer/cesium/terrainCesiumImpl.ts +3 -3
  301. package/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.ts +4 -3
  302. package/src/layer/cesium/vectorContext.ts +1 -1
  303. package/src/layer/cesium/vectorRasterTileCesiumImpl.ts +7 -6
  304. package/src/layer/cesium/vectorTileImageryProvider.ts +2 -2
  305. package/src/layer/cesiumTilesetLayer.ts +60 -8
  306. package/src/layer/cogLayer.ts +5 -5
  307. package/src/layer/czmlLayer.ts +4 -4
  308. package/src/layer/featureLayer.ts +5 -16
  309. package/src/layer/featureStoreLayer.ts +11 -5
  310. package/src/layer/flatGeobufLayer.ts +12 -0
  311. package/src/layer/geojsonLayer.ts +5 -12
  312. package/src/layer/i3sLayer.ts +343 -0
  313. package/src/layer/layer.ts +178 -39
  314. package/src/layer/layerSymbols.ts +5 -0
  315. package/src/layer/openStreetMapLayer.ts +13 -6
  316. package/src/layer/panorama/vectorPanoramaImpl.ts +238 -0
  317. package/src/layer/panoramaDatasetLayer.ts +69 -23
  318. package/src/layer/pointCloudLayer.ts +5 -20
  319. package/src/layer/rasterLayer.ts +4 -4
  320. package/src/layer/singleImageLayer.ts +5 -3
  321. package/src/layer/terrainLayer.ts +9 -6
  322. package/src/layer/tileProvider/flatGeobufTileProvider.ts +9 -5
  323. package/src/layer/tileProvider/mvtTileProvider.ts +10 -5
  324. package/src/layer/tileProvider/staticFeatureTileProvider.ts +5 -3
  325. package/src/layer/tileProvider/staticGeojsonTileProvider.ts +11 -4
  326. package/src/layer/tileProvider/tileProvider.ts +18 -5
  327. package/src/layer/tileProvider/urlTemplateTileProvider.ts +7 -3
  328. package/src/layer/tmsLayer.ts +3 -10
  329. package/src/layer/vectorLayer.ts +29 -11
  330. package/src/layer/vectorProperties.ts +10 -1
  331. package/src/layer/vectorTileLayer.ts +141 -53
  332. package/src/layer/wfsLayer.ts +7 -4
  333. package/src/layer/wmsLayer.ts +80 -48
  334. package/src/layer/wmtsLayer.ts +3 -10
  335. package/src/map/baseCesiumMap.ts +600 -0
  336. package/src/map/cesiumMap.ts +99 -457
  337. package/src/map/obliqueMap.ts +16 -10
  338. package/src/map/openlayersMap.ts +5 -5
  339. package/src/map/panoramaMap.ts +74 -139
  340. package/src/map/vcsMap.ts +44 -4
  341. package/src/oblique/obliqueCollection.ts +5 -4
  342. package/src/ol/ol.d.ts +13 -2
  343. package/src/panorama/panoramaCameraController.ts +13 -1
  344. package/src/panorama/panoramaImage.ts +25 -8
  345. package/src/panorama/panoramaImageView.ts +29 -3
  346. package/src/panorama/panoramaTileMaterial.ts +20 -0
  347. package/src/panorama/panoramaTileMaterialFS.glsl +16 -1
  348. package/src/panorama/panoramaTilePrimitiveCollection.ts +34 -0
  349. package/src/style/declarativeStyleItem.ts +7 -9
  350. package/src/util/clipping/clippingPolygonObject.ts +5 -4
  351. package/src/util/displayQuality/displayQuality.ts +4 -4
  352. package/src/util/editor/createFeatureSession.ts +4 -1
  353. package/src/util/editor/editFeaturesSession.ts +14 -4
  354. package/src/util/editor/editGeometrySession.ts +3 -1
  355. package/src/util/editor/editorSessionHelpers.ts +5 -3
  356. package/src/util/editor/interactions/creationSnapping.ts +7 -1
  357. package/src/util/editor/interactions/ensureHandlerSelectionInteraction.ts +2 -2
  358. package/src/util/editor/interactions/layerSnapping.ts +7 -1
  359. package/src/util/editor/interactions/mapInteractionController.ts +12 -2
  360. package/src/util/editor/interactions/translationSnapping.ts +6 -4
  361. package/src/util/editor/selectFeaturesSession.ts +1 -1
  362. package/src/util/editor/transformation/create3DHandlers.ts +2 -2
  363. package/src/util/editor/transformation/transformationHandler.ts +5 -3
  364. package/src/util/editor/transformation/translateInteraction.ts +4 -4
  365. package/src/util/fetch.ts +7 -0
  366. package/src/util/flight/flightInstance.ts +6 -5
  367. package/src/util/mapCollection.ts +18 -0
  368. package/src/util/renderScreenshot.ts +4 -8
  369. package/src/util/viewpoint.ts +2 -2
  370. package/src/vcsApp.ts +7 -8
  371. package/src/vcsModuleHelpers.ts +62 -4
  372. package/src/vcsObject.ts +10 -1
  373. package/src/vectorCluster/vectorClusterGroup.ts +7 -4
  374. package/src/vectorCluster/vectorClusterStyleItem.ts +8 -4
  375. package/dist/src/map/cesiumMapHelpers.d.ts +0 -7
  376. package/dist/src/map/cesiumMapHelpers.js +0 -144
  377. package/dist/src/map/cesiumMapHelpers.js.map +0 -1
  378. package/src/map/cesiumMapHelpers.ts +0 -219
@@ -0,0 +1,600 @@
1
+ import {
2
+ type Camera,
3
+ Cartesian3,
4
+ Cartographic,
5
+ type Cesium3DTileset,
6
+ type CesiumWidget,
7
+ type CustomDataSource,
8
+ type CzmlDataSource,
9
+ Ellipsoid,
10
+ type I3SDataProvider,
11
+ ImageryLayer,
12
+ type ImageryLayerCollection,
13
+ JulianDate,
14
+ KeyboardEventModifier,
15
+ Math as CesiumMath,
16
+ PrimitiveCollection,
17
+ Ray,
18
+ RequestScheduler,
19
+ type Scene,
20
+ ScreenSpaceEventHandler,
21
+ ScreenSpaceEventType,
22
+ type TerrainProvider,
23
+ } from '@vcmap-cesium/engine';
24
+ import type { Coordinate } from 'ol/coordinate.js';
25
+ import VcsMap from './vcsMap.js';
26
+ import type Layer from '../layer/layer.js';
27
+ import type LayerCollection from '../util/layerCollection.js';
28
+ import { vcsLayerName } from '../layer/layerSymbols.js';
29
+ import Viewpoint from '../util/viewpoint.js';
30
+ import {
31
+ ModificationKeyType,
32
+ PointerEventType,
33
+ PointerKeyType,
34
+ } from '../interaction/interactionType.js';
35
+ import Projection from '../util/projection.js';
36
+
37
+ RequestScheduler.maximumRequestsPerServer = 12;
38
+
39
+ /**
40
+ * Ensures, a primitive/imageryLayer/entity is part of a collection and placed at the correct location
41
+ * @param cesiumCollection
42
+ * @param item
43
+ * @param layerCollection
44
+ * @private
45
+ */
46
+ function ensureInCollection<
47
+ T extends PrimitiveCollection | ImageryLayerCollection,
48
+ >(
49
+ cesiumCollection: T,
50
+ item: T extends PrimitiveCollection
51
+ ? PrimitiveCollection | Cesium3DTileset | I3SDataProvider
52
+ : ImageryLayer,
53
+ layerCollection: LayerCollection,
54
+ ): void {
55
+ const targetIndex = layerCollection.indexOfKey(item[vcsLayerName]) as number;
56
+ if (targetIndex > -1) {
57
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
58
+ // @ts-ignore
59
+ if (!cesiumCollection.contains(item)) {
60
+ const primitivesLength = cesiumCollection.length;
61
+ let index = primitivesLength;
62
+ for (let i = 0; i < primitivesLength; i++) {
63
+ const collectionItem = cesiumCollection.get(
64
+ i,
65
+ ) as T extends PrimitiveCollection
66
+ ? PrimitiveCollection | Cesium3DTileset | I3SDataProvider
67
+ : ImageryLayer;
68
+ if (
69
+ (layerCollection.indexOfKey(collectionItem[vcsLayerName]) as number) >
70
+ targetIndex
71
+ ) {
72
+ index = i;
73
+ break;
74
+ }
75
+ }
76
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
77
+ // @ts-ignore
78
+ cesiumCollection.add(item, index);
79
+ }
80
+ }
81
+ }
82
+
83
+ /**
84
+ * @param primitiveCollection
85
+ * @param item
86
+ * @param layerCollection
87
+ * @private
88
+ */
89
+ function indexChangedOnPrimitive(
90
+ primitiveCollection: PrimitiveCollection,
91
+ item: PrimitiveCollection,
92
+ layerCollection: LayerCollection,
93
+ ): void {
94
+ const { destroyPrimitives } = primitiveCollection;
95
+ primitiveCollection.destroyPrimitives = false;
96
+ primitiveCollection.remove(item);
97
+ ensureInCollection(primitiveCollection, item, layerCollection);
98
+ primitiveCollection.destroyPrimitives = destroyPrimitives;
99
+ }
100
+
101
+ /**
102
+ * @param imageryLayerCollection
103
+ * @param item
104
+ * @param layerCollection
105
+ * @private
106
+ */
107
+ function indexChangedOnImageryLayer(
108
+ imageryLayerCollection: ImageryLayerCollection,
109
+ item: ImageryLayer,
110
+ layerCollection: LayerCollection,
111
+ ): void {
112
+ imageryLayerCollection.remove(item, false);
113
+ ensureInCollection(imageryLayerCollection, item, layerCollection);
114
+ }
115
+
116
+ export function getResolution(
117
+ cartesian: Cartesian3,
118
+ camera: Camera,
119
+ mapElement: HTMLElement,
120
+ latitude?: number,
121
+ ): number {
122
+ const distance = Cartesian3.distance(cartesian, camera.position);
123
+ const usedLatitude =
124
+ latitude ?? Cartographic.fromCartesian(cartesian).latitude;
125
+
126
+ const fov = Math.PI / 3.0;
127
+ const width = mapElement.offsetWidth;
128
+ const height = mapElement.offsetHeight;
129
+ const aspectRatio = width / height;
130
+ const fovy = Math.atan(Math.tan(fov * 0.5) / aspectRatio) * 2.0;
131
+ const visibleMeters = 2 * distance * Math.tan(fovy / 2);
132
+ const relativeCircumference = Math.cos(Math.abs(usedLatitude));
133
+ const visibleMapUnits = visibleMeters / relativeCircumference;
134
+
135
+ return visibleMapUnits / height;
136
+ }
137
+
138
+ export type CesiumVisualisationType =
139
+ | CustomDataSource
140
+ | CzmlDataSource
141
+ | PrimitiveCollection
142
+ | Cesium3DTileset
143
+ | ImageryLayer
144
+ | I3SDataProvider;
145
+
146
+ export default class BaseCesiumMap extends VcsMap<CesiumVisualisationType> {
147
+ static get className(): string {
148
+ return 'BaseCesiumMap';
149
+ }
150
+
151
+ protected _cesiumWidget: CesiumWidget | null = null;
152
+
153
+ protected _terrainProvider: TerrainProvider | null | undefined = null;
154
+
155
+ private _screenSpaceListener: (() => void) | undefined;
156
+
157
+ screenSpaceEventHandler: ScreenSpaceEventHandler | null = null;
158
+
159
+ defaultTerrainProvider: TerrainProvider | null = null;
160
+
161
+ protected _listeners: (() => void)[] = [];
162
+
163
+ get terrainProvider(): TerrainProvider | null | undefined {
164
+ return this._terrainProvider;
165
+ }
166
+
167
+ protected _initializeCesiumWidget(widget: CesiumWidget): void {
168
+ if (this._cesiumWidget) {
169
+ throw new Error('CesiumWidget already initialized');
170
+ }
171
+ this._cesiumWidget = widget;
172
+ this._cesiumWidget.clock.currentTime = JulianDate.fromDate(
173
+ new Date(new Date().getFullYear(), 6, 20, 13, 0, 0, 0),
174
+ );
175
+ this.screenSpaceEventHandler = new ScreenSpaceEventHandler(
176
+ this._cesiumWidget.scene.canvas,
177
+ );
178
+ this._setupCesiumInteractions();
179
+
180
+ this.defaultTerrainProvider = this._cesiumWidget.scene.terrainProvider;
181
+ this._terrainProvider = this.defaultTerrainProvider;
182
+ this._listeners.push(
183
+ this._cesiumWidget.scene.terrainProviderChanged.addEventListener(
184
+ this._terrainProviderChanged.bind(this),
185
+ ),
186
+ );
187
+
188
+ this._cesiumWidget.scene.frameState.creditDisplay.update = (): void => {};
189
+ this._cesiumWidget.scene.frameState.creditDisplay.beginFrame =
190
+ (): void => {};
191
+ this._cesiumWidget.scene.frameState.creditDisplay.endFrame = (): void => {};
192
+
193
+ // hide default cesium credits container
194
+ const creditsContainer = document.getElementsByClassName(
195
+ 'cesium-widget-credits',
196
+ );
197
+ if (creditsContainer) {
198
+ for (let i = 0; i < creditsContainer.length; i++) {
199
+ const element = creditsContainer[i] as HTMLElement;
200
+ element.style.display = 'none';
201
+ }
202
+ }
203
+
204
+ this._listeners.push(
205
+ this._cesiumWidget.scene.postRender.addEventListener(
206
+ (eventScene: Scene, time: JulianDate) => {
207
+ this.postRender.raiseEvent({
208
+ map: this,
209
+ originalEvent: { scene: eventScene, time },
210
+ });
211
+ },
212
+ ),
213
+ );
214
+ }
215
+
216
+ override async activate(): Promise<void> {
217
+ await super.activate();
218
+ if (this.active && this._cesiumWidget) {
219
+ this._cesiumWidget.useDefaultRenderLoop = true;
220
+ this._cesiumWidget.resize();
221
+ }
222
+ }
223
+
224
+ override deactivate(): void {
225
+ super.deactivate();
226
+ if (this._cesiumWidget) {
227
+ this._cesiumWidget.useDefaultRenderLoop = false;
228
+ }
229
+ }
230
+
231
+ override getViewpoint(): Promise<null | Viewpoint> {
232
+ return Promise.resolve(this.getViewpointSync());
233
+ }
234
+
235
+ override getViewpointSync(): Viewpoint | null {
236
+ if (!this._cesiumWidget || !this._cesiumWidget.scene || !this.target) {
237
+ return null;
238
+ }
239
+ const cam = this._cesiumWidget.scene.camera;
240
+ const cameraPositionCartesian = cam.position;
241
+ let groundPosition;
242
+ let distance;
243
+
244
+ const groundPositionCartesian = this._cesiumWidget.scene.globe?.pick(
245
+ new Ray(cam.position, cam.direction),
246
+ this._cesiumWidget.scene,
247
+ );
248
+
249
+ if (groundPositionCartesian) {
250
+ distance = Cartesian3.distance(
251
+ groundPositionCartesian,
252
+ cameraPositionCartesian,
253
+ );
254
+ const groundPositionCartographic =
255
+ Ellipsoid.WGS84.cartesianToCartographic(groundPositionCartesian);
256
+ groundPosition = [
257
+ CesiumMath.toDegrees(groundPositionCartographic.longitude),
258
+ CesiumMath.toDegrees(groundPositionCartographic.latitude),
259
+ groundPositionCartographic.height,
260
+ ];
261
+ }
262
+
263
+ const cameraPositionCartographic = cam.positionCartographic;
264
+ const cameraPosition = [
265
+ CesiumMath.toDegrees(cameraPositionCartographic.longitude),
266
+ CesiumMath.toDegrees(cameraPositionCartographic.latitude),
267
+ cameraPositionCartographic.height,
268
+ ];
269
+
270
+ return new Viewpoint({
271
+ groundPosition,
272
+ cameraPosition,
273
+ distance,
274
+ heading: CesiumMath.toDegrees(cam.heading),
275
+ pitch: CesiumMath.toDegrees(cam.pitch),
276
+ roll: CesiumMath.toDegrees(cam.roll),
277
+ });
278
+ }
279
+
280
+ private _getCurrentResolutionFromCartesianLatitude(
281
+ cartesian: Cartesian3,
282
+ latitude?: number,
283
+ ): number {
284
+ if (!this._cesiumWidget) {
285
+ return 1;
286
+ }
287
+
288
+ return getResolution(
289
+ cartesian,
290
+ this._cesiumWidget.camera,
291
+ this.mapElement,
292
+ latitude,
293
+ );
294
+ }
295
+
296
+ getCurrentResolution(coordinate: Coordinate): number {
297
+ const wgs84Coordinate = Projection.mercatorToWgs84(coordinate);
298
+ const cartesian = Cartesian3.fromDegrees(
299
+ wgs84Coordinate[0],
300
+ wgs84Coordinate[1],
301
+ wgs84Coordinate[2],
302
+ );
303
+ return this._getCurrentResolutionFromCartesianLatitude(
304
+ cartesian,
305
+ CesiumMath.toRadians(wgs84Coordinate[1]),
306
+ );
307
+ }
308
+
309
+ getCurrentResolutionFromCartesian(cartesian: Cartesian3): number {
310
+ return this._getCurrentResolutionFromCartesianLatitude(cartesian);
311
+ }
312
+
313
+ private _setupCesiumInteractions(): void {
314
+ const scene = this.getScene()!;
315
+ const raisePointerInteraction = (
316
+ key: ModificationKeyType,
317
+ pointer: number,
318
+ pointerEvent: PointerEventType,
319
+ csEvent:
320
+ | ScreenSpaceEventHandler.PositionedEvent
321
+ | ScreenSpaceEventHandler.MotionEvent,
322
+ ): void => {
323
+ const multipleTouch =
324
+ // eslint-disable-next-line no-underscore-dangle
325
+ (this.screenSpaceEventHandler?._positions?.length ?? 0) > 1;
326
+ const windowPosition = (
327
+ csEvent as ScreenSpaceEventHandler.PositionedEvent
328
+ ).position
329
+ ? (csEvent as ScreenSpaceEventHandler.PositionedEvent).position
330
+ : (csEvent as ScreenSpaceEventHandler.MotionEvent).endPosition;
331
+
332
+ this.pointerInteractionEvent.raiseEvent({
333
+ map: this,
334
+ windowPosition,
335
+ key,
336
+ pointer,
337
+ multipleTouch,
338
+ pointerEvent,
339
+ });
340
+ };
341
+
342
+ const mods = [
343
+ {
344
+ csModifier: KeyboardEventModifier.ALT,
345
+ vcsModifier: ModificationKeyType.ALT,
346
+ },
347
+ {
348
+ csModifier: KeyboardEventModifier.CTRL,
349
+ vcsModifier: ModificationKeyType.CTRL,
350
+ },
351
+ {
352
+ csModifier: KeyboardEventModifier.SHIFT,
353
+ vcsModifier: ModificationKeyType.SHIFT,
354
+ },
355
+ { csModifier: undefined, vcsModifier: ModificationKeyType.NONE },
356
+ ];
357
+
358
+ const types = [
359
+ {
360
+ type: ScreenSpaceEventType.LEFT_DOWN,
361
+ pointerEvent: PointerEventType.DOWN,
362
+ pointer: PointerKeyType.LEFT,
363
+ },
364
+ {
365
+ type: ScreenSpaceEventType.LEFT_UP,
366
+ pointerEvent: PointerEventType.UP,
367
+ pointer: PointerKeyType.LEFT,
368
+ },
369
+ {
370
+ type: ScreenSpaceEventType.RIGHT_DOWN,
371
+ pointerEvent: PointerEventType.DOWN,
372
+ pointer: PointerKeyType.RIGHT,
373
+ },
374
+ {
375
+ type: ScreenSpaceEventType.RIGHT_UP,
376
+ pointerEvent: PointerEventType.UP,
377
+ pointer: PointerKeyType.RIGHT,
378
+ },
379
+ {
380
+ type: ScreenSpaceEventType.MIDDLE_DOWN,
381
+ pointerEvent: PointerEventType.DOWN,
382
+ pointer: PointerKeyType.MIDDLE,
383
+ },
384
+ {
385
+ type: ScreenSpaceEventType.MIDDLE_UP,
386
+ pointerEvent: PointerEventType.UP,
387
+ pointer: PointerKeyType.MIDDLE,
388
+ },
389
+ {
390
+ type: ScreenSpaceEventType.MOUSE_MOVE,
391
+ pointerEvent: PointerEventType.MOVE,
392
+ pointer: PointerKeyType.ALL,
393
+ },
394
+ ];
395
+ let lastEventFrameNumber = 0;
396
+ const screenSpaceListeners = types
397
+ .map(({ pointerEvent, pointer, type }) => {
398
+ return mods.map(({ csModifier, vcsModifier }) => {
399
+ const handler:
400
+ | ScreenSpaceEventHandler.PositionedEventCallback
401
+ | ScreenSpaceEventHandler.MotionEventCallback =
402
+ type === ScreenSpaceEventType.MOUSE_MOVE
403
+ ? (csEvent: ScreenSpaceEventHandler.MotionEvent): void => {
404
+ if (scene.frameState.frameNumber !== lastEventFrameNumber) {
405
+ lastEventFrameNumber = scene.frameState.frameNumber;
406
+ raisePointerInteraction(
407
+ vcsModifier,
408
+ pointer,
409
+ pointerEvent,
410
+ csEvent,
411
+ );
412
+ }
413
+ }
414
+ : (csEvent: ScreenSpaceEventHandler.PositionedEvent): void => {
415
+ raisePointerInteraction(
416
+ vcsModifier,
417
+ pointer,
418
+ pointerEvent,
419
+ csEvent,
420
+ );
421
+ };
422
+
423
+ this.screenSpaceEventHandler!.setInputAction?.(
424
+ handler,
425
+ type,
426
+ csModifier,
427
+ );
428
+ return (): void => {
429
+ this.screenSpaceEventHandler?.removeInputAction?.(type, csModifier);
430
+ };
431
+ });
432
+ })
433
+ .flat();
434
+
435
+ this._screenSpaceListener = (): void => {
436
+ screenSpaceListeners.forEach((removeListener) => {
437
+ removeListener();
438
+ });
439
+ };
440
+ }
441
+
442
+ /**
443
+ * returns the cesium Widget Object
444
+ */
445
+ getCesiumWidget(): CesiumWidget | null {
446
+ return this._cesiumWidget;
447
+ }
448
+
449
+ /**
450
+ * returns the cesium Scene Object, returns null on non initialized or destroyed maps
451
+ */
452
+ getScene(): Scene | undefined {
453
+ return this._cesiumWidget?.scene;
454
+ }
455
+
456
+ protected _indexChangedOnVisualization(vis: CesiumVisualisationType): void {
457
+ if (vis instanceof PrimitiveCollection) {
458
+ indexChangedOnPrimitive(
459
+ (this.getScene() as Scene).primitives,
460
+ vis,
461
+ this.layerCollection,
462
+ );
463
+ } else if (vis instanceof ImageryLayer) {
464
+ indexChangedOnImageryLayer(
465
+ (this.getScene() as Scene).imageryLayers,
466
+ vis,
467
+ this.layerCollection,
468
+ );
469
+ }
470
+ }
471
+
472
+ override indexChanged(layer: Layer): void {
473
+ const viz = this.getVisualizationsForLayer(layer);
474
+ if (viz) {
475
+ viz.forEach((item) => {
476
+ this._indexChangedOnVisualization(item);
477
+ });
478
+ }
479
+ }
480
+
481
+ /**
482
+ * Internal API used to register visualizations from layer implementations
483
+ * @param primitiveCollection
484
+ */
485
+ addPrimitiveCollection(
486
+ primitiveCollection:
487
+ | PrimitiveCollection
488
+ | Cesium3DTileset
489
+ | I3SDataProvider,
490
+ ): void {
491
+ if (!this._cesiumWidget) {
492
+ throw new Error('Cannot add primitive to uninitialized map');
493
+ }
494
+ if (this.validateVisualization(primitiveCollection)) {
495
+ this.addVisualization(primitiveCollection);
496
+ ensureInCollection(
497
+ this._cesiumWidget.scene.primitives,
498
+ primitiveCollection,
499
+ this.layerCollection,
500
+ );
501
+ }
502
+ }
503
+
504
+ /**
505
+ * Internal API to unregister the visualization for a layers implementation
506
+ * @param primitiveCollection
507
+ */
508
+ removePrimitiveCollection(
509
+ primitiveCollection:
510
+ | PrimitiveCollection
511
+ | Cesium3DTileset
512
+ | I3SDataProvider,
513
+ ): void {
514
+ // XXX add destroy as boolean?
515
+ this.removeVisualization(primitiveCollection);
516
+ this.getScene()?.primitives.remove(primitiveCollection);
517
+ }
518
+
519
+ /**
520
+ * Internal API used to register visualizations from layer implementations
521
+ * @param imageryLayer
522
+ */
523
+ addImageryLayer(imageryLayer: ImageryLayer): void {
524
+ if (!this._cesiumWidget) {
525
+ throw new Error('Cannot add primitive to uninitialized map');
526
+ }
527
+ if (this.validateVisualization(imageryLayer)) {
528
+ this.addVisualization(imageryLayer);
529
+ ensureInCollection(
530
+ this._cesiumWidget.scene.imageryLayers,
531
+ imageryLayer,
532
+ this.layerCollection,
533
+ );
534
+ }
535
+ }
536
+
537
+ /**
538
+ * Internal API used to unregister visualizations from layer implementations
539
+ */
540
+ removeImageryLayer(imageryLayer: ImageryLayer): void {
541
+ this.removeVisualization(imageryLayer);
542
+ this.getScene()?.imageryLayers.remove(imageryLayer);
543
+ }
544
+
545
+ /**
546
+ * set the cesium TerrainProvider
547
+ */
548
+ setTerrainProvider(terrainProvider: TerrainProvider): void {
549
+ if (this.terrainProvider !== terrainProvider && this._cesiumWidget) {
550
+ this._cesiumWidget.scene.terrainProvider = terrainProvider;
551
+ }
552
+ }
553
+
554
+ /**
555
+ * unsets the TerrainProvider (changes to the default TerrainProvider if the given terranProvider is currently active)
556
+ */
557
+ unsetTerrainProvider(terrainProvider: TerrainProvider): void {
558
+ if (this.terrainProvider === terrainProvider) {
559
+ this._terrainProvider = this.defaultTerrainProvider;
560
+ if (this._cesiumWidget && this.defaultTerrainProvider) {
561
+ this._cesiumWidget.scene.terrainProvider = this.defaultTerrainProvider;
562
+ }
563
+ }
564
+ }
565
+
566
+ /**
567
+ * is called when the cesium Terrainprovider changes. Sets the .terrainProvider and deactivates currently
568
+ * active TerrainLayer layer if necessary
569
+ */
570
+ private _terrainProviderChanged(terrainProvider: TerrainProvider): void {
571
+ if (this.terrainProvider !== terrainProvider) {
572
+ const layer = this.layerCollection.getByKey(
573
+ this?.terrainProvider?.[vcsLayerName],
574
+ );
575
+ this._terrainProvider = terrainProvider;
576
+ if (layer) {
577
+ layer.deactivate();
578
+ }
579
+ }
580
+ }
581
+
582
+ override destroy(): void {
583
+ this._listeners.forEach((cb) => {
584
+ cb();
585
+ });
586
+ this._listeners = [];
587
+ this._screenSpaceListener?.();
588
+
589
+ this.screenSpaceEventHandler?.destroy();
590
+ this.screenSpaceEventHandler = null;
591
+
592
+ this._terrainProvider = null;
593
+ this.defaultTerrainProvider = null;
594
+
595
+ super.destroy();
596
+
597
+ this._cesiumWidget?.destroy(); // destroy widget last to not throw
598
+ this._cesiumWidget = null;
599
+ }
600
+ }