@vcmap/core 6.2.2 → 6.3.0-rc.1

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 (293) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/category/category.d.ts +1 -1
  5. package/dist/src/category/category.js +3 -4
  6. package/dist/src/category/category.js.map +1 -1
  7. package/dist/src/featureProvider/abstractFeatureProvider.d.ts +1 -1
  8. package/dist/src/featureProvider/abstractFeatureProvider.js +3 -4
  9. package/dist/src/featureProvider/abstractFeatureProvider.js.map +1 -1
  10. package/dist/src/featureProvider/wmsFeatureProvider.d.ts +3 -1
  11. package/dist/src/featureProvider/wmsFeatureProvider.js +37 -9
  12. package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
  13. package/dist/src/interaction/coordinateAtPixel.js +4 -6
  14. package/dist/src/interaction/coordinateAtPixel.js.map +1 -1
  15. package/dist/src/interaction/ensurePositionInteraction.d.ts +14 -0
  16. package/dist/src/interaction/ensurePositionInteraction.js +42 -0
  17. package/dist/src/interaction/ensurePositionInteraction.js.map +1 -0
  18. package/dist/src/interaction/eventHandler.d.ts +3 -0
  19. package/dist/src/interaction/eventHandler.js +10 -1
  20. package/dist/src/interaction/eventHandler.js.map +1 -1
  21. package/dist/src/interaction/featureAtPixelInteraction.js +29 -17
  22. package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
  23. package/dist/src/interaction/panoramaImageSelection.js +2 -2
  24. package/dist/src/interaction/panoramaImageSelection.js.map +1 -1
  25. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.d.ts +3 -3
  26. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js.map +1 -1
  27. package/dist/src/layer/cesium/cogImageryProvider.d.ts +2 -2
  28. package/dist/src/layer/cesium/cogImageryProvider.js +6 -26
  29. package/dist/src/layer/cesium/cogImageryProvider.js.map +1 -1
  30. package/dist/src/layer/cesium/rasterLayerCesiumImpl.d.ts +3 -3
  31. package/dist/src/layer/cesium/rasterLayerCesiumImpl.js.map +1 -1
  32. package/dist/src/layer/cesium/terrainCesiumImpl.d.ts +3 -3
  33. package/dist/src/layer/cesium/terrainCesiumImpl.js.map +1 -1
  34. package/dist/src/layer/cesium/vectorContext.js +1 -1
  35. package/dist/src/layer/cesium/vectorContext.js.map +1 -1
  36. package/dist/src/layer/cesiumTilesetLayer.d.ts +1 -1
  37. package/dist/src/layer/cesiumTilesetLayer.js +7 -7
  38. package/dist/src/layer/cesiumTilesetLayer.js.map +1 -1
  39. package/dist/src/layer/cogLayer.d.ts +7 -2
  40. package/dist/src/layer/cogLayer.js +10 -4
  41. package/dist/src/layer/cogLayer.js.map +1 -1
  42. package/dist/src/layer/czmlLayer.d.ts +1 -1
  43. package/dist/src/layer/czmlLayer.js +4 -4
  44. package/dist/src/layer/czmlLayer.js.map +1 -1
  45. package/dist/src/layer/featureLayer.d.ts +1 -6
  46. package/dist/src/layer/featureLayer.js +3 -10
  47. package/dist/src/layer/featureLayer.js.map +1 -1
  48. package/dist/src/layer/featureStoreLayer.d.ts +3 -2
  49. package/dist/src/layer/featureStoreLayer.js +5 -5
  50. package/dist/src/layer/featureStoreLayer.js.map +1 -1
  51. package/dist/src/layer/flatGeobufLayer.d.ts +2 -0
  52. package/dist/src/layer/flatGeobufLayer.js +8 -0
  53. package/dist/src/layer/flatGeobufLayer.js.map +1 -1
  54. package/dist/src/layer/geojsonLayer.d.ts +1 -1
  55. package/dist/src/layer/geojsonLayer.js +5 -12
  56. package/dist/src/layer/geojsonLayer.js.map +1 -1
  57. package/dist/src/layer/layer.d.ts +21 -7
  58. package/dist/src/layer/layer.js +107 -33
  59. package/dist/src/layer/layer.js.map +1 -1
  60. package/dist/src/layer/openStreetMapLayer.d.ts +1 -1
  61. package/dist/src/layer/openStreetMapLayer.js +11 -6
  62. package/dist/src/layer/openStreetMapLayer.js.map +1 -1
  63. package/dist/src/layer/panorama/vectorPanoramaImpl.d.ts +38 -0
  64. package/dist/src/layer/panorama/vectorPanoramaImpl.js +164 -0
  65. package/dist/src/layer/panorama/vectorPanoramaImpl.js.map +1 -0
  66. package/dist/src/layer/panoramaDatasetLayer.d.ts +5 -3
  67. package/dist/src/layer/panoramaDatasetLayer.js +13 -7
  68. package/dist/src/layer/panoramaDatasetLayer.js.map +1 -1
  69. package/dist/src/layer/pointCloudLayer.d.ts +1 -5
  70. package/dist/src/layer/pointCloudLayer.js +3 -15
  71. package/dist/src/layer/pointCloudLayer.js.map +1 -1
  72. package/dist/src/layer/rasterLayer.d.ts +1 -1
  73. package/dist/src/layer/rasterLayer.js +4 -4
  74. package/dist/src/layer/rasterLayer.js.map +1 -1
  75. package/dist/src/layer/singleImageLayer.d.ts +1 -1
  76. package/dist/src/layer/singleImageLayer.js +3 -3
  77. package/dist/src/layer/singleImageLayer.js.map +1 -1
  78. package/dist/src/layer/terrainLayer.d.ts +1 -1
  79. package/dist/src/layer/terrainLayer.js +8 -6
  80. package/dist/src/layer/terrainLayer.js.map +1 -1
  81. package/dist/src/layer/tileProvider/flatGeobufTileProvider.d.ts +1 -1
  82. package/dist/src/layer/tileProvider/flatGeobufTileProvider.js +4 -3
  83. package/dist/src/layer/tileProvider/flatGeobufTileProvider.js.map +1 -1
  84. package/dist/src/layer/tileProvider/mvtTileProvider.d.ts +1 -1
  85. package/dist/src/layer/tileProvider/mvtTileProvider.js +3 -3
  86. package/dist/src/layer/tileProvider/mvtTileProvider.js.map +1 -1
  87. package/dist/src/layer/tileProvider/staticFeatureTileProvider.d.ts +1 -1
  88. package/dist/src/layer/tileProvider/staticFeatureTileProvider.js +3 -3
  89. package/dist/src/layer/tileProvider/staticFeatureTileProvider.js.map +1 -1
  90. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.d.ts +1 -1
  91. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.js +7 -4
  92. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.js.map +1 -1
  93. package/dist/src/layer/tileProvider/tileProvider.d.ts +1 -1
  94. package/dist/src/layer/tileProvider/tileProvider.js +3 -4
  95. package/dist/src/layer/tileProvider/tileProvider.js.map +1 -1
  96. package/dist/src/layer/tileProvider/urlTemplateTileProvider.d.ts +1 -1
  97. package/dist/src/layer/tileProvider/urlTemplateTileProvider.js +3 -3
  98. package/dist/src/layer/tileProvider/urlTemplateTileProvider.js.map +1 -1
  99. package/dist/src/layer/tmsLayer.d.ts +1 -1
  100. package/dist/src/layer/tmsLayer.js +3 -10
  101. package/dist/src/layer/tmsLayer.js.map +1 -1
  102. package/dist/src/layer/vectorLayer.d.ts +11 -5
  103. package/dist/src/layer/vectorLayer.js +19 -8
  104. package/dist/src/layer/vectorLayer.js.map +1 -1
  105. package/dist/src/layer/vectorTileLayer.d.ts +1 -1
  106. package/dist/src/layer/vectorTileLayer.js +4 -5
  107. package/dist/src/layer/vectorTileLayer.js.map +1 -1
  108. package/dist/src/layer/wfsLayer.d.ts +1 -1
  109. package/dist/src/layer/wfsLayer.js +5 -4
  110. package/dist/src/layer/wfsLayer.js.map +1 -1
  111. package/dist/src/layer/wmsLayer.d.ts +1 -1
  112. package/dist/src/layer/wmsLayer.js +3 -4
  113. package/dist/src/layer/wmsLayer.js.map +1 -1
  114. package/dist/src/layer/wmtsLayer.d.ts +1 -1
  115. package/dist/src/layer/wmtsLayer.js +3 -10
  116. package/dist/src/layer/wmtsLayer.js.map +1 -1
  117. package/dist/src/map/baseCesiumMap.d.ts +69 -0
  118. package/dist/src/map/baseCesiumMap.js +381 -0
  119. package/dist/src/map/baseCesiumMap.js.map +1 -0
  120. package/dist/src/map/cesiumMap.d.ts +6 -98
  121. package/dist/src/map/cesiumMap.js +32 -258
  122. package/dist/src/map/cesiumMap.js.map +1 -1
  123. package/dist/src/map/obliqueMap.d.ts +1 -1
  124. package/dist/src/map/obliqueMap.js +3 -4
  125. package/dist/src/map/obliqueMap.js.map +1 -1
  126. package/dist/src/map/openlayersMap.d.ts +1 -1
  127. package/dist/src/map/openlayersMap.js +3 -4
  128. package/dist/src/map/openlayersMap.js.map +1 -1
  129. package/dist/src/map/panoramaMap.d.ts +17 -29
  130. package/dist/src/map/panoramaMap.js +56 -100
  131. package/dist/src/map/panoramaMap.js.map +1 -1
  132. package/dist/src/map/vcsMap.d.ts +15 -2
  133. package/dist/src/map/vcsMap.js +26 -3
  134. package/dist/src/map/vcsMap.js.map +1 -1
  135. package/dist/src/oblique/obliqueCollection.d.ts +1 -1
  136. package/dist/src/oblique/obliqueCollection.js +3 -4
  137. package/dist/src/oblique/obliqueCollection.js.map +1 -1
  138. package/dist/src/panorama/panoramaCameraController.d.ts +4 -0
  139. package/dist/src/panorama/panoramaCameraController.js +8 -0
  140. package/dist/src/panorama/panoramaCameraController.js.map +1 -1
  141. package/dist/src/panorama/panoramaImage.d.ts +10 -1
  142. package/dist/src/panorama/panoramaImage.js +9 -4
  143. package/dist/src/panorama/panoramaImage.js.map +1 -1
  144. package/dist/src/panorama/panoramaImageView.d.ts +6 -1
  145. package/dist/src/panorama/panoramaImageView.js +11 -2
  146. package/dist/src/panorama/panoramaImageView.js.map +1 -1
  147. package/dist/src/panorama/panoramaTileMaterial.d.ts +6 -0
  148. package/dist/src/panorama/panoramaTileMaterial.js +14 -0
  149. package/dist/src/panorama/panoramaTileMaterial.js.map +1 -1
  150. package/dist/src/panorama/panoramaTileMaterialFS.shader.d.ts +1 -1
  151. package/dist/src/panorama/panoramaTileMaterialFS.shader.js +16 -1
  152. package/dist/src/panorama/panoramaTileMaterialFS.shader.js.map +1 -1
  153. package/dist/src/panorama/panoramaTilePrimitiveCollection.d.ts +6 -0
  154. package/dist/src/panorama/panoramaTilePrimitiveCollection.js +28 -0
  155. package/dist/src/panorama/panoramaTilePrimitiveCollection.js.map +1 -1
  156. package/dist/src/util/clipping/clippingPolygonObject.d.ts +1 -1
  157. package/dist/src/util/clipping/clippingPolygonObject.js +3 -4
  158. package/dist/src/util/clipping/clippingPolygonObject.js.map +1 -1
  159. package/dist/src/util/displayQuality/displayQuality.js +4 -4
  160. package/dist/src/util/displayQuality/displayQuality.js.map +1 -1
  161. package/dist/src/util/editor/createFeatureSession.js +3 -1
  162. package/dist/src/util/editor/createFeatureSession.js.map +1 -1
  163. package/dist/src/util/editor/editFeaturesSession.js +9 -2
  164. package/dist/src/util/editor/editFeaturesSession.js.map +1 -1
  165. package/dist/src/util/editor/editGeometrySession.js +3 -1
  166. package/dist/src/util/editor/editGeometrySession.js.map +1 -1
  167. package/dist/src/util/editor/editorSessionHelpers.d.ts +3 -3
  168. package/dist/src/util/editor/editorSessionHelpers.js +4 -2
  169. package/dist/src/util/editor/editorSessionHelpers.js.map +1 -1
  170. package/dist/src/util/editor/interactions/creationSnapping.js +4 -1
  171. package/dist/src/util/editor/interactions/creationSnapping.js.map +1 -1
  172. package/dist/src/util/editor/interactions/ensureHandlerSelectionInteraction.js +2 -2
  173. package/dist/src/util/editor/interactions/ensureHandlerSelectionInteraction.js.map +1 -1
  174. package/dist/src/util/editor/interactions/layerSnapping.js +4 -1
  175. package/dist/src/util/editor/interactions/layerSnapping.js.map +1 -1
  176. package/dist/src/util/editor/interactions/mapInteractionController.js +12 -1
  177. package/dist/src/util/editor/interactions/mapInteractionController.js.map +1 -1
  178. package/dist/src/util/editor/interactions/translationSnapping.js +4 -2
  179. package/dist/src/util/editor/interactions/translationSnapping.js.map +1 -1
  180. package/dist/src/util/editor/selectFeaturesSession.js +1 -1
  181. package/dist/src/util/editor/selectFeaturesSession.js.map +1 -1
  182. package/dist/src/util/editor/transformation/create3DHandlers.d.ts +2 -2
  183. package/dist/src/util/editor/transformation/create3DHandlers.js.map +1 -1
  184. package/dist/src/util/editor/transformation/transformationHandler.js +5 -2
  185. package/dist/src/util/editor/transformation/transformationHandler.js.map +1 -1
  186. package/dist/src/util/editor/transformation/translateInteraction.js +2 -2
  187. package/dist/src/util/editor/transformation/translateInteraction.js.map +1 -1
  188. package/dist/src/util/flight/flightInstance.d.ts +1 -1
  189. package/dist/src/util/flight/flightInstance.js +3 -4
  190. package/dist/src/util/flight/flightInstance.js.map +1 -1
  191. package/dist/src/util/mapCollection.d.ts +5 -0
  192. package/dist/src/util/mapCollection.js +14 -0
  193. package/dist/src/util/mapCollection.js.map +1 -1
  194. package/dist/src/util/renderScreenshot.js +2 -3
  195. package/dist/src/util/renderScreenshot.js.map +1 -1
  196. package/dist/src/util/viewpoint.js +1 -1
  197. package/dist/src/util/viewpoint.js.map +1 -1
  198. package/dist/src/vcsObject.d.ts +2 -1
  199. package/dist/src/vcsObject.js +9 -1
  200. package/dist/src/vcsObject.js.map +1 -1
  201. package/dist/src/vectorCluster/vectorClusterGroup.d.ts +1 -1
  202. package/dist/src/vectorCluster/vectorClusterGroup.js +3 -4
  203. package/dist/src/vectorCluster/vectorClusterGroup.js.map +1 -1
  204. package/dist/src/vectorCluster/vectorClusterStyleItem.d.ts +1 -1
  205. package/dist/src/vectorCluster/vectorClusterStyleItem.js +3 -4
  206. package/dist/src/vectorCluster/vectorClusterStyleItem.js.map +1 -1
  207. package/dist/tests/unit/helpers/cesiumHelpers.d.ts +11 -1
  208. package/dist/tests/unit/helpers/cesiumHelpers.js +19 -2
  209. package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
  210. package/dist/tests/unit/helpers/panoramaHelpers.js +1 -1
  211. package/dist/tests/unit/helpers/panoramaHelpers.js.map +1 -1
  212. package/index.ts +3 -5
  213. package/package.json +2 -2
  214. package/src/category/category.ts +3 -4
  215. package/src/featureProvider/abstractFeatureProvider.ts +5 -4
  216. package/src/featureProvider/wmsFeatureProvider.ts +52 -14
  217. package/src/global.d.ts +0 -1
  218. package/src/interaction/coordinateAtPixel.ts +4 -6
  219. package/src/interaction/ensurePositionInteraction.ts +50 -0
  220. package/src/interaction/eventHandler.ts +12 -1
  221. package/src/interaction/featureAtPixelInteraction.ts +39 -29
  222. package/src/interaction/panoramaImageSelection.ts +4 -2
  223. package/src/layer/cesium/cesiumTilesetCesiumImpl.ts +3 -3
  224. package/src/layer/cesium/cogImageryProvider.ts +9 -26
  225. package/src/layer/cesium/rasterLayerCesiumImpl.ts +3 -3
  226. package/src/layer/cesium/terrainCesiumImpl.ts +3 -3
  227. package/src/layer/cesium/vectorContext.ts +1 -1
  228. package/src/layer/cesiumTilesetLayer.ts +9 -7
  229. package/src/layer/cogLayer.ts +22 -6
  230. package/src/layer/czmlLayer.ts +4 -4
  231. package/src/layer/featureLayer.ts +5 -16
  232. package/src/layer/featureStoreLayer.ts +11 -5
  233. package/src/layer/flatGeobufLayer.ts +12 -0
  234. package/src/layer/geojsonLayer.ts +5 -12
  235. package/src/layer/layer.ts +148 -36
  236. package/src/layer/openStreetMapLayer.ts +13 -6
  237. package/src/layer/panorama/vectorPanoramaImpl.ts +238 -0
  238. package/src/layer/panoramaDatasetLayer.ts +25 -10
  239. package/src/layer/pointCloudLayer.ts +5 -20
  240. package/src/layer/rasterLayer.ts +4 -4
  241. package/src/layer/singleImageLayer.ts +5 -3
  242. package/src/layer/terrainLayer.ts +9 -6
  243. package/src/layer/tileProvider/flatGeobufTileProvider.ts +6 -3
  244. package/src/layer/tileProvider/mvtTileProvider.ts +7 -3
  245. package/src/layer/tileProvider/staticFeatureTileProvider.ts +5 -3
  246. package/src/layer/tileProvider/staticGeojsonTileProvider.ts +11 -4
  247. package/src/layer/tileProvider/tileProvider.ts +5 -4
  248. package/src/layer/tileProvider/urlTemplateTileProvider.ts +7 -3
  249. package/src/layer/tmsLayer.ts +3 -10
  250. package/src/layer/vectorLayer.ts +25 -9
  251. package/src/layer/vectorTileLayer.ts +6 -6
  252. package/src/layer/wfsLayer.ts +7 -4
  253. package/src/layer/wmsLayer.ts +3 -4
  254. package/src/layer/wmtsLayer.ts +3 -10
  255. package/src/map/baseCesiumMap.ts +576 -0
  256. package/src/map/cesiumMap.ts +103 -446
  257. package/src/map/obliqueMap.ts +3 -4
  258. package/src/map/openlayersMap.ts +5 -5
  259. package/src/map/panoramaMap.ts +74 -139
  260. package/src/map/vcsMap.ts +44 -4
  261. package/src/oblique/obliqueCollection.ts +5 -4
  262. package/src/panorama/panoramaCameraController.ts +13 -1
  263. package/src/panorama/panoramaImage.ts +17 -3
  264. package/src/panorama/panoramaImageView.ts +29 -3
  265. package/src/panorama/panoramaTileMaterial.ts +20 -0
  266. package/src/panorama/panoramaTileMaterialFS.glsl +16 -1
  267. package/src/panorama/panoramaTilePrimitiveCollection.ts +34 -0
  268. package/src/util/clipping/clippingPolygonObject.ts +5 -4
  269. package/src/util/displayQuality/displayQuality.ts +4 -4
  270. package/src/util/editor/createFeatureSession.ts +4 -1
  271. package/src/util/editor/editFeaturesSession.ts +14 -4
  272. package/src/util/editor/editGeometrySession.ts +3 -1
  273. package/src/util/editor/editorSessionHelpers.ts +5 -3
  274. package/src/util/editor/interactions/creationSnapping.ts +7 -1
  275. package/src/util/editor/interactions/ensureHandlerSelectionInteraction.ts +2 -2
  276. package/src/util/editor/interactions/layerSnapping.ts +7 -1
  277. package/src/util/editor/interactions/mapInteractionController.ts +12 -2
  278. package/src/util/editor/interactions/translationSnapping.ts +6 -4
  279. package/src/util/editor/selectFeaturesSession.ts +1 -1
  280. package/src/util/editor/transformation/create3DHandlers.ts +2 -2
  281. package/src/util/editor/transformation/transformationHandler.ts +5 -3
  282. package/src/util/editor/transformation/translateInteraction.ts +4 -4
  283. package/src/util/flight/flightInstance.ts +6 -5
  284. package/src/util/mapCollection.ts +18 -0
  285. package/src/util/renderScreenshot.ts +4 -8
  286. package/src/util/viewpoint.ts +2 -2
  287. package/src/vcsObject.ts +10 -1
  288. package/src/vectorCluster/vectorClusterGroup.ts +7 -4
  289. package/src/vectorCluster/vectorClusterStyleItem.ts +8 -4
  290. package/dist/src/map/cesiumMapHelpers.d.ts +0 -7
  291. package/dist/src/map/cesiumMapHelpers.js +0 -144
  292. package/dist/src/map/cesiumMapHelpers.js.map +0 -1
  293. package/src/map/cesiumMapHelpers.ts +0 -219
@@ -69,9 +69,9 @@ class FlightInstance extends VcsObject {
69
69
  }
70
70
 
71
71
  constructor(options: FlightInstanceOptions) {
72
- super(options);
73
-
74
72
  const defaultOptions = FlightInstance.getDefaultOptions();
73
+ super({ ...defaultOptions, ...options });
74
+
75
75
  const anchorsArray = (options.anchors ?? defaultOptions.anchors!)
76
76
  .map(anchorFromGeojsonFeature)
77
77
  .filter((a): a is FlightAnchor => !!a);
@@ -205,15 +205,16 @@ class FlightInstance extends VcsObject {
205
205
  * returns an options object for this flight. if this flight was configured via an URL, only the url will be configured.
206
206
  * @returns
207
207
  */
208
- toJSON(): FlightInstanceOptions {
209
- const config = super.toJSON() as FlightInstanceOptions;
208
+ toJSON(
209
+ defaultOptions = FlightInstance.getDefaultOptions(),
210
+ ): FlightInstanceOptions {
211
+ const config = super.toJSON(defaultOptions) as FlightInstanceOptions;
210
212
 
211
213
  if (this._url) {
212
214
  config.url = this._url;
213
215
  return config;
214
216
  }
215
217
 
216
- const defaultOptions = FlightInstance.getDefaultOptions();
217
218
  if (this._multiplier !== defaultOptions.multiplier) {
218
219
  config.multiplier = this._multiplier;
219
220
  }
@@ -22,6 +22,7 @@ import PanoramaImageSelection from '../interaction/panoramaImageSelection.js';
22
22
  import type { PanoramaImage } from '../panorama/panoramaImage.js';
23
23
  import type PanoramaMap from '../map/panoramaMap.js';
24
24
  import PanoramaFeatureHighlight from '../interaction/panoramaFeatureHighlight.js';
25
+ import { EventType } from '../interaction/interactionType.js';
25
26
 
26
27
  export type MapCollectionInitializationError = {
27
28
  error: Error;
@@ -258,6 +259,23 @@ class MapCollection extends Collection<VcsMap> {
258
259
  return this._exclusiveMapControls?.id;
259
260
  }
260
261
 
262
+ /**
263
+ * Indicates whether panorama image selection is paused.
264
+ */
265
+ get pausePanoramaImageSelection(): boolean {
266
+ return (
267
+ this._panoramaImageSelection.active === EventType.NONE &&
268
+ this._panoramaTileHighlight.active === EventType.NONE
269
+ );
270
+ }
271
+
272
+ set pausePanoramaImageSelection(paused: boolean) {
273
+ check(paused, Boolean);
274
+ const active = paused ? false : undefined;
275
+ this._panoramaImageSelection.setActive(active);
276
+ this._panoramaTileHighlight.setActive(active);
277
+ }
278
+
261
279
  /**
262
280
  * Adds a map to the collection. This will set the collections target
263
281
  * and the collections on the map.
@@ -1,20 +1,16 @@
1
1
  import type { Size } from 'ol/size.js';
2
2
  import { getLogger } from '@vcsuite/logger';
3
- import CesiumMap from '../map/cesiumMap.js';
4
3
  import OpenlayersMap from '../map/openlayersMap.js';
5
4
  import ObliqueMap from '../map/obliqueMap.js';
6
- import PanoramaMap from '../map/panoramaMap.js';
7
5
  import type VcsApp from '../vcsApp.js';
6
+ import BaseCesiumMap from '../map/baseCesiumMap.js';
8
7
  /**
9
8
  * Prepares the cesium map for the screenshot
10
9
  * @param map - The cesium map
11
10
  * @param scale - The factor to scale the map according to the required resolution
12
11
  * @returns The function to reset the applied scale.
13
12
  */
14
- function prepareCesiumMap(
15
- map: CesiumMap | PanoramaMap,
16
- scale: number,
17
- ): () => void {
13
+ function prepareCesiumMap(map: BaseCesiumMap, scale: number): () => void {
18
14
  const viewer = map.getCesiumWidget()!;
19
15
  const { resolutionScale } = viewer;
20
16
  viewer.resolutionScale = scale;
@@ -64,7 +60,7 @@ function prepareOlMap(
64
60
  * @returns A promise that resolves to the canvas element.
65
61
  */
66
62
  async function getImageFromCesium(
67
- map: CesiumMap | PanoramaMap,
63
+ map: BaseCesiumMap,
68
64
  ): Promise<HTMLCanvasElement> {
69
65
  const { scene } = map.getCesiumWidget()!;
70
66
 
@@ -167,7 +163,7 @@ export default async function renderScreenshot(
167
163
  let resetMap: () => void;
168
164
  const map = app.maps.activeMap;
169
165
 
170
- if (map instanceof CesiumMap || map instanceof PanoramaMap) {
166
+ if (map instanceof BaseCesiumMap) {
171
167
  const { canvas } = map.getCesiumWidget()!.scene;
172
168
  const canvasWidth = canvas.width;
173
169
  const canvasHeight = canvas.height;
@@ -182,9 +182,9 @@ class Viewpoint extends VcsObject {
182
182
  * @param options
183
183
  */
184
184
  constructor(options: ViewpointOptions) {
185
- super(options);
186
-
187
185
  const defaultOptions = Viewpoint.getDefaultOptions();
186
+ super({ ...defaultOptions, ...options });
187
+
188
188
  this.cameraPosition = null;
189
189
  if (
190
190
  Array.isArray(options.cameraPosition) &&
package/src/vcsObject.ts CHANGED
@@ -25,6 +25,14 @@ class VcsObject {
25
25
  return 'VcsObject';
26
26
  }
27
27
 
28
+ static getDefaultOptions(): VcsObjectOptions {
29
+ return {
30
+ type: undefined,
31
+ name: undefined,
32
+ properties: {},
33
+ };
34
+ }
35
+
28
36
  /**
29
37
  * unique Name
30
38
  */
@@ -50,7 +58,8 @@ class VcsObject {
50
58
  return getLogger(this.className);
51
59
  }
52
60
 
53
- toJSON(): VcsObjectOptions {
61
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
62
+ toJSON(_defaultOptions?: VcsObjectOptions): VcsObjectOptions {
54
63
  const config: VcsObjectOptions = {
55
64
  type: this.className,
56
65
  name: this.name,
@@ -135,8 +135,8 @@ export default class VectorClusterGroup extends VcsObject {
135
135
  clusterDistance: number;
136
136
 
137
137
  constructor(options: VectorClusterGroupOptions) {
138
- super(options);
139
138
  const defaultOptions = VectorClusterGroup.getDefaultOptions();
139
+ super({ ...defaultOptions, ...options });
140
140
 
141
141
  this._style = getStyleOrDefaultStyle(
142
142
  options.style,
@@ -445,9 +445,12 @@ export default class VectorClusterGroup extends VcsObject {
445
445
  }
446
446
  }
447
447
 
448
- toJSON(): VectorClusterGroupOptions {
449
- const config: Partial<VectorClusterGroupOptions> = super.toJSON();
450
- const defaultOptions = VectorClusterGroup.getDefaultOptions();
448
+ toJSON(
449
+ defaultOptions = VectorClusterGroup.getDefaultOptions(),
450
+ ): VectorClusterGroupOptions {
451
+ const config: Partial<VectorClusterGroupOptions> = super.toJSON(
452
+ defaultOptions,
453
+ );
451
454
 
452
455
  if (!this.style.equals(new VectorClusterStyleItem({}))) {
453
456
  config.style = this.style.toJSON();
@@ -99,8 +99,8 @@ export default class VectorClusterStyleItem extends VcsObject {
99
99
  styleChanged = new VcsEvent<void>();
100
100
 
101
101
  constructor(options: VectorClusterStyleItemOptions) {
102
- super(options);
103
102
  const defaultOptions = VectorClusterStyleItem.getDefaultOptions();
103
+ super({ ...defaultOptions, ...options });
104
104
 
105
105
  const configTemplate = Array.isArray(options.template)
106
106
  ? options.template.join('')
@@ -336,9 +336,13 @@ export default class VectorClusterStyleItem extends VcsObject {
336
336
  this._styleCache.clear();
337
337
  }
338
338
 
339
- toJSON(): VectorClusterStyleItemOptions {
340
- const config: Partial<VectorClusterStyleItemOptions> = super.toJSON();
341
- const defaultOptions = VectorClusterStyleItem.getDefaultOptions();
339
+ toJSON(
340
+ defaultOptions = VectorClusterStyleItem.getDefaultOptions(),
341
+ ): VectorClusterStyleItemOptions {
342
+ const config: Partial<VectorClusterStyleItemOptions> = super.toJSON(
343
+ defaultOptions,
344
+ );
345
+
342
346
  if (this.template !== defaultOptions.template) {
343
347
  config.template = this.template;
344
348
  }
@@ -1,7 +0,0 @@
1
- import type { Camera, Scene, ScreenSpaceEventHandler } from '@vcmap-cesium/engine';
2
- import { Cartesian3 } from '@vcmap-cesium/engine';
3
- import Viewpoint from '../util/viewpoint.js';
4
- import type VcsMap from './vcsMap.js';
5
- export declare function setupCesiumInteractions(map: VcsMap, scene: Scene, screenSpaceEventHandler: ScreenSpaceEventHandler): () => void;
6
- export declare function getViewpointFromScene(scene: Scene): Viewpoint;
7
- export declare function getResolution(cartesian: Cartesian3, camera: Camera, mapElement: HTMLElement, latitude?: number): number;
@@ -1,144 +0,0 @@
1
- import { Cartesian3, Cartographic, Ellipsoid, KeyboardEventModifier, Math as CesiumMath, Ray, ScreenSpaceEventType, } from '@vcmap-cesium/engine';
2
- import { ModificationKeyType, PointerEventType, PointerKeyType, } from '../interaction/interactionType.js';
3
- import Viewpoint from '../util/viewpoint.js';
4
- function raisePointerInteraction(map, key, pointer, pointerEvent, csEvent, screenSpaceEventHandler) {
5
- const multipleTouch =
6
- // eslint-disable-next-line no-underscore-dangle
7
- (screenSpaceEventHandler?._positions?.length ?? 0) > 1;
8
- const windowPosition = csEvent
9
- .position
10
- ? csEvent.position
11
- : csEvent.endPosition;
12
- map.pointerInteractionEvent.raiseEvent({
13
- map,
14
- windowPosition,
15
- key,
16
- pointer,
17
- multipleTouch,
18
- pointerEvent,
19
- });
20
- }
21
- export function setupCesiumInteractions(map, scene, screenSpaceEventHandler) {
22
- const mods = [
23
- {
24
- csModifier: KeyboardEventModifier.ALT,
25
- vcsModifier: ModificationKeyType.ALT,
26
- },
27
- {
28
- csModifier: KeyboardEventModifier.CTRL,
29
- vcsModifier: ModificationKeyType.CTRL,
30
- },
31
- {
32
- csModifier: KeyboardEventModifier.SHIFT,
33
- vcsModifier: ModificationKeyType.SHIFT,
34
- },
35
- { csModifier: undefined, vcsModifier: ModificationKeyType.NONE },
36
- ];
37
- const types = [
38
- {
39
- type: ScreenSpaceEventType.LEFT_DOWN,
40
- pointerEvent: PointerEventType.DOWN,
41
- pointer: PointerKeyType.LEFT,
42
- },
43
- {
44
- type: ScreenSpaceEventType.LEFT_UP,
45
- pointerEvent: PointerEventType.UP,
46
- pointer: PointerKeyType.LEFT,
47
- },
48
- {
49
- type: ScreenSpaceEventType.RIGHT_DOWN,
50
- pointerEvent: PointerEventType.DOWN,
51
- pointer: PointerKeyType.RIGHT,
52
- },
53
- {
54
- type: ScreenSpaceEventType.RIGHT_UP,
55
- pointerEvent: PointerEventType.UP,
56
- pointer: PointerKeyType.RIGHT,
57
- },
58
- {
59
- type: ScreenSpaceEventType.MIDDLE_DOWN,
60
- pointerEvent: PointerEventType.DOWN,
61
- pointer: PointerKeyType.MIDDLE,
62
- },
63
- {
64
- type: ScreenSpaceEventType.MIDDLE_UP,
65
- pointerEvent: PointerEventType.UP,
66
- pointer: PointerKeyType.MIDDLE,
67
- },
68
- {
69
- type: ScreenSpaceEventType.MOUSE_MOVE,
70
- pointerEvent: PointerEventType.MOVE,
71
- pointer: PointerKeyType.ALL,
72
- },
73
- ];
74
- let lastEventFrameNumber = 0;
75
- const screenSpaceListeners = types
76
- .map(({ pointerEvent, pointer, type }) => {
77
- return mods.map(({ csModifier, vcsModifier }) => {
78
- const handler = type === ScreenSpaceEventType.MOUSE_MOVE
79
- ? (csEvent) => {
80
- if (scene.frameState.frameNumber !== lastEventFrameNumber) {
81
- lastEventFrameNumber = scene.frameState.frameNumber;
82
- raisePointerInteraction(map, vcsModifier, pointer, pointerEvent, csEvent, screenSpaceEventHandler);
83
- }
84
- }
85
- : (csEvent) => {
86
- raisePointerInteraction(map, vcsModifier, pointer, pointerEvent, csEvent, screenSpaceEventHandler);
87
- };
88
- screenSpaceEventHandler.setInputAction?.(handler, type, csModifier);
89
- return () => {
90
- screenSpaceEventHandler.removeInputAction?.(type, csModifier);
91
- };
92
- });
93
- })
94
- .flat();
95
- return () => {
96
- screenSpaceListeners.forEach((removeListener) => {
97
- removeListener();
98
- });
99
- };
100
- }
101
- export function getViewpointFromScene(scene) {
102
- const cam = scene.camera;
103
- const cameraPositionCartesian = cam.position;
104
- let groundPosition;
105
- let distance;
106
- const groundPositionCartesian = scene.globe?.pick(new Ray(cam.position, cam.direction), scene);
107
- if (groundPositionCartesian) {
108
- distance = Cartesian3.distance(groundPositionCartesian, cameraPositionCartesian);
109
- const groundPositionCartographic = Ellipsoid.WGS84.cartesianToCartographic(groundPositionCartesian);
110
- groundPosition = [
111
- CesiumMath.toDegrees(groundPositionCartographic.longitude),
112
- CesiumMath.toDegrees(groundPositionCartographic.latitude),
113
- groundPositionCartographic.height,
114
- ];
115
- }
116
- const cameraPositionCartographic = cam.positionCartographic;
117
- const cameraPosition = [
118
- CesiumMath.toDegrees(cameraPositionCartographic.longitude),
119
- CesiumMath.toDegrees(cameraPositionCartographic.latitude),
120
- cameraPositionCartographic.height,
121
- ];
122
- return new Viewpoint({
123
- groundPosition,
124
- cameraPosition,
125
- distance,
126
- heading: CesiumMath.toDegrees(cam.heading),
127
- pitch: CesiumMath.toDegrees(cam.pitch),
128
- roll: CesiumMath.toDegrees(cam.roll),
129
- });
130
- }
131
- export function getResolution(cartesian, camera, mapElement, latitude) {
132
- const distance = Cartesian3.distance(cartesian, camera.position);
133
- const usedLatitude = latitude ?? Cartographic.fromCartesian(cartesian).latitude;
134
- const fov = Math.PI / 3.0;
135
- const width = mapElement.offsetWidth;
136
- const height = mapElement.offsetHeight;
137
- const aspectRatio = width / height;
138
- const fovy = Math.atan(Math.tan(fov * 0.5) / aspectRatio) * 2.0;
139
- const visibleMeters = 2 * distance * Math.tan(fovy / 2);
140
- const relativeCircumference = Math.cos(Math.abs(usedLatitude));
141
- const visibleMapUnits = visibleMeters / relativeCircumference;
142
- return visibleMapUnits / height;
143
- }
144
- //# sourceMappingURL=cesiumMapHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cesiumMapHelpers.js","sourceRoot":"","sources":["../../../src/map/cesiumMapHelpers.ts"],"names":[],"mappings":"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"}
@@ -1,219 +0,0 @@
1
- import type {
2
- Camera,
3
- Scene,
4
- ScreenSpaceEventHandler,
5
- } from '@vcmap-cesium/engine';
6
- import {
7
- Cartesian3,
8
- Cartographic,
9
- Ellipsoid,
10
- KeyboardEventModifier,
11
- Math as CesiumMath,
12
- Ray,
13
- ScreenSpaceEventType,
14
- } from '@vcmap-cesium/engine';
15
- import {
16
- ModificationKeyType,
17
- PointerEventType,
18
- PointerKeyType,
19
- } from '../interaction/interactionType.js';
20
- import Viewpoint from '../util/viewpoint.js';
21
- import type VcsMap from './vcsMap.js';
22
-
23
- function raisePointerInteraction(
24
- map: VcsMap,
25
- key: ModificationKeyType,
26
- pointer: number,
27
- pointerEvent: PointerEventType,
28
- csEvent:
29
- | ScreenSpaceEventHandler.PositionedEvent
30
- | ScreenSpaceEventHandler.MotionEvent,
31
- screenSpaceEventHandler: ScreenSpaceEventHandler,
32
- ): void {
33
- const multipleTouch =
34
- // eslint-disable-next-line no-underscore-dangle
35
- (screenSpaceEventHandler?._positions?.length ?? 0) > 1;
36
- const windowPosition = (csEvent as ScreenSpaceEventHandler.PositionedEvent)
37
- .position
38
- ? (csEvent as ScreenSpaceEventHandler.PositionedEvent).position
39
- : (csEvent as ScreenSpaceEventHandler.MotionEvent).endPosition;
40
-
41
- map.pointerInteractionEvent.raiseEvent({
42
- map,
43
- windowPosition,
44
- key,
45
- pointer,
46
- multipleTouch,
47
- pointerEvent,
48
- });
49
- }
50
-
51
- export function setupCesiumInteractions(
52
- map: VcsMap,
53
- scene: Scene,
54
- screenSpaceEventHandler: ScreenSpaceEventHandler,
55
- ): () => void {
56
- const mods = [
57
- {
58
- csModifier: KeyboardEventModifier.ALT,
59
- vcsModifier: ModificationKeyType.ALT,
60
- },
61
- {
62
- csModifier: KeyboardEventModifier.CTRL,
63
- vcsModifier: ModificationKeyType.CTRL,
64
- },
65
- {
66
- csModifier: KeyboardEventModifier.SHIFT,
67
- vcsModifier: ModificationKeyType.SHIFT,
68
- },
69
- { csModifier: undefined, vcsModifier: ModificationKeyType.NONE },
70
- ];
71
-
72
- const types = [
73
- {
74
- type: ScreenSpaceEventType.LEFT_DOWN,
75
- pointerEvent: PointerEventType.DOWN,
76
- pointer: PointerKeyType.LEFT,
77
- },
78
- {
79
- type: ScreenSpaceEventType.LEFT_UP,
80
- pointerEvent: PointerEventType.UP,
81
- pointer: PointerKeyType.LEFT,
82
- },
83
- {
84
- type: ScreenSpaceEventType.RIGHT_DOWN,
85
- pointerEvent: PointerEventType.DOWN,
86
- pointer: PointerKeyType.RIGHT,
87
- },
88
- {
89
- type: ScreenSpaceEventType.RIGHT_UP,
90
- pointerEvent: PointerEventType.UP,
91
- pointer: PointerKeyType.RIGHT,
92
- },
93
- {
94
- type: ScreenSpaceEventType.MIDDLE_DOWN,
95
- pointerEvent: PointerEventType.DOWN,
96
- pointer: PointerKeyType.MIDDLE,
97
- },
98
- {
99
- type: ScreenSpaceEventType.MIDDLE_UP,
100
- pointerEvent: PointerEventType.UP,
101
- pointer: PointerKeyType.MIDDLE,
102
- },
103
- {
104
- type: ScreenSpaceEventType.MOUSE_MOVE,
105
- pointerEvent: PointerEventType.MOVE,
106
- pointer: PointerKeyType.ALL,
107
- },
108
- ];
109
- let lastEventFrameNumber = 0;
110
- const screenSpaceListeners = types
111
- .map(({ pointerEvent, pointer, type }) => {
112
- return mods.map(({ csModifier, vcsModifier }) => {
113
- const handler:
114
- | ScreenSpaceEventHandler.PositionedEventCallback
115
- | ScreenSpaceEventHandler.MotionEventCallback =
116
- type === ScreenSpaceEventType.MOUSE_MOVE
117
- ? (csEvent: ScreenSpaceEventHandler.MotionEvent): void => {
118
- if (scene.frameState.frameNumber !== lastEventFrameNumber) {
119
- lastEventFrameNumber = scene.frameState.frameNumber;
120
- raisePointerInteraction(
121
- map,
122
- vcsModifier,
123
- pointer,
124
- pointerEvent,
125
- csEvent,
126
- screenSpaceEventHandler,
127
- );
128
- }
129
- }
130
- : (csEvent: ScreenSpaceEventHandler.PositionedEvent): void => {
131
- raisePointerInteraction(
132
- map,
133
- vcsModifier,
134
- pointer,
135
- pointerEvent,
136
- csEvent,
137
- screenSpaceEventHandler,
138
- );
139
- };
140
-
141
- screenSpaceEventHandler.setInputAction?.(handler, type, csModifier);
142
- return (): void => {
143
- screenSpaceEventHandler.removeInputAction?.(type, csModifier);
144
- };
145
- });
146
- })
147
- .flat();
148
-
149
- return (): void => {
150
- screenSpaceListeners.forEach((removeListener) => {
151
- removeListener();
152
- });
153
- };
154
- }
155
-
156
- export function getViewpointFromScene(scene: Scene): Viewpoint {
157
- const cam = scene.camera;
158
- const cameraPositionCartesian = cam.position;
159
- let groundPosition;
160
- let distance;
161
-
162
- const groundPositionCartesian = scene.globe?.pick(
163
- new Ray(cam.position, cam.direction),
164
- scene,
165
- );
166
-
167
- if (groundPositionCartesian) {
168
- distance = Cartesian3.distance(
169
- groundPositionCartesian,
170
- cameraPositionCartesian,
171
- );
172
- const groundPositionCartographic = Ellipsoid.WGS84.cartesianToCartographic(
173
- groundPositionCartesian,
174
- );
175
- groundPosition = [
176
- CesiumMath.toDegrees(groundPositionCartographic.longitude),
177
- CesiumMath.toDegrees(groundPositionCartographic.latitude),
178
- groundPositionCartographic.height,
179
- ];
180
- }
181
-
182
- const cameraPositionCartographic = cam.positionCartographic;
183
- const cameraPosition = [
184
- CesiumMath.toDegrees(cameraPositionCartographic.longitude),
185
- CesiumMath.toDegrees(cameraPositionCartographic.latitude),
186
- cameraPositionCartographic.height,
187
- ];
188
-
189
- return new Viewpoint({
190
- groundPosition,
191
- cameraPosition,
192
- distance,
193
- heading: CesiumMath.toDegrees(cam.heading),
194
- pitch: CesiumMath.toDegrees(cam.pitch),
195
- roll: CesiumMath.toDegrees(cam.roll),
196
- });
197
- }
198
-
199
- export function getResolution(
200
- cartesian: Cartesian3,
201
- camera: Camera,
202
- mapElement: HTMLElement,
203
- latitude?: number,
204
- ): number {
205
- const distance = Cartesian3.distance(cartesian, camera.position);
206
- const usedLatitude =
207
- latitude ?? Cartographic.fromCartesian(cartesian).latitude;
208
-
209
- const fov = Math.PI / 3.0;
210
- const width = mapElement.offsetWidth;
211
- const height = mapElement.offsetHeight;
212
- const aspectRatio = width / height;
213
- const fovy = Math.atan(Math.tan(fov * 0.5) / aspectRatio) * 2.0;
214
- const visibleMeters = 2 * distance * Math.tan(fovy / 2);
215
- const relativeCircumference = Math.cos(Math.abs(usedLatitude));
216
- const visibleMapUnits = visibleMeters / relativeCircumference;
217
-
218
- return visibleMapUnits / height;
219
- }