@vcmap/core 5.0.2 → 5.1.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 (309) hide show
  1. package/dist/cesium.d.ts +257 -0
  2. package/dist/geojson.d.ts +27 -0
  3. package/dist/index.d.ts +15 -2
  4. package/dist/index.js +9 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/ol.d.ts +138 -0
  7. package/dist/src/classRegistry.js +2 -2
  8. package/dist/src/classRegistry.js.map +1 -1
  9. package/dist/src/featureProvider/abstractFeatureProvider.d.ts +2 -1
  10. package/dist/src/featureProvider/abstractFeatureProvider.js +2 -1
  11. package/dist/src/featureProvider/abstractFeatureProvider.js.map +1 -1
  12. package/dist/src/featureProvider/tileProviderFeatureProvider.d.ts +1 -1
  13. package/dist/src/featureProvider/tileProviderFeatureProvider.js +2 -2
  14. package/dist/src/featureProvider/tileProviderFeatureProvider.js.map +1 -1
  15. package/dist/src/featureProvider/wmsFeatureProvider.d.ts +1 -1
  16. package/dist/src/featureProvider/wmsFeatureProvider.js +4 -3
  17. package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
  18. package/dist/src/interaction/eventHandler.js +3 -3
  19. package/dist/src/interaction/eventHandler.js.map +1 -1
  20. package/dist/src/interaction/featureProviderInteraction.js +1 -1
  21. package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
  22. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.d.ts +4 -1
  23. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js +31 -2
  24. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js.map +1 -1
  25. package/dist/src/layer/cesium/resourceHelper.d.ts +2 -0
  26. package/dist/src/layer/cesium/resourceHelper.js +12 -0
  27. package/dist/src/layer/cesium/resourceHelper.js.map +1 -0
  28. package/dist/src/layer/cesium/singleImageCesiumImpl.js +2 -1
  29. package/dist/src/layer/cesium/singleImageCesiumImpl.js.map +1 -1
  30. package/dist/src/layer/cesium/terrainCesiumImpl.js +1 -1
  31. package/dist/src/layer/cesium/terrainCesiumImpl.js.map +1 -1
  32. package/dist/src/layer/cesium/tmsCesiumImpl.js +2 -1
  33. package/dist/src/layer/cesium/tmsCesiumImpl.js.map +1 -1
  34. package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js +1 -0
  35. package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js.map +1 -1
  36. package/dist/src/layer/cesium/vectorTileImageryProvider.d.ts +2 -0
  37. package/dist/src/layer/cesium/vectorTileImageryProvider.js +3 -1
  38. package/dist/src/layer/cesium/vectorTileImageryProvider.js.map +1 -1
  39. package/dist/src/layer/cesium/wmsCesiumImpl.js +2 -1
  40. package/dist/src/layer/cesium/wmsCesiumImpl.js.map +1 -1
  41. package/dist/src/layer/cesium/wmtsCesiumImpl.js +2 -1
  42. package/dist/src/layer/cesium/wmtsCesiumImpl.js.map +1 -1
  43. package/dist/src/layer/cesiumTilesetLayer.d.ts +5 -1
  44. package/dist/src/layer/cesiumTilesetLayer.js +17 -7
  45. package/dist/src/layer/cesiumTilesetLayer.js.map +1 -1
  46. package/dist/src/layer/czmlLayer.js +2 -1
  47. package/dist/src/layer/czmlLayer.js.map +1 -1
  48. package/dist/src/layer/featureLayer.js +2 -2
  49. package/dist/src/layer/featureLayer.js.map +1 -1
  50. package/dist/src/layer/featureStoreLayer.js +8 -5
  51. package/dist/src/layer/featureStoreLayer.js.map +1 -1
  52. package/dist/src/layer/featureStoreLayerChanges.d.ts +20 -8
  53. package/dist/src/layer/featureStoreLayerChanges.js +26 -26
  54. package/dist/src/layer/featureStoreLayerChanges.js.map +1 -1
  55. package/dist/src/layer/featureStoreLayerState.d.ts +1 -5
  56. package/dist/src/layer/featureStoreLayerState.js +0 -9
  57. package/dist/src/layer/featureStoreLayerState.js.map +1 -1
  58. package/dist/src/layer/geojsonLayer.js +3 -2
  59. package/dist/src/layer/geojsonLayer.js.map +1 -1
  60. package/dist/src/layer/layer.d.ts +15 -0
  61. package/dist/src/layer/layer.js +30 -4
  62. package/dist/src/layer/layer.js.map +1 -1
  63. package/dist/src/layer/layerImplementation.d.ts +1 -0
  64. package/dist/src/layer/layerImplementation.js +2 -0
  65. package/dist/src/layer/layerImplementation.js.map +1 -1
  66. package/dist/src/layer/oblique/vectorObliqueImpl.js +9 -6
  67. package/dist/src/layer/oblique/vectorObliqueImpl.js.map +1 -1
  68. package/dist/src/layer/openlayers/loadFunctionHelpers.d.ts +2 -0
  69. package/dist/src/layer/openlayers/loadFunctionHelpers.js +20 -0
  70. package/dist/src/layer/openlayers/loadFunctionHelpers.js.map +1 -0
  71. package/dist/src/layer/openlayers/singleImageOpenlayersImpl.js +25 -1
  72. package/dist/src/layer/openlayers/singleImageOpenlayersImpl.js.map +1 -1
  73. package/dist/src/layer/openlayers/tmsOpenlayersImpl.js +9 -1
  74. package/dist/src/layer/openlayers/tmsOpenlayersImpl.js.map +1 -1
  75. package/dist/src/layer/openlayers/vectorTileOpenlayersImpl.js +1 -1
  76. package/dist/src/layer/openlayers/vectorTileOpenlayersImpl.js.map +1 -1
  77. package/dist/src/layer/openlayers/wmsOpenlayersImpl.d.ts +4 -1
  78. package/dist/src/layer/openlayers/wmsOpenlayersImpl.js +20 -1
  79. package/dist/src/layer/openlayers/wmsOpenlayersImpl.js.map +1 -1
  80. package/dist/src/layer/openlayers/wmtsOpenlayersImpl.js +9 -1
  81. package/dist/src/layer/openlayers/wmtsOpenlayersImpl.js.map +1 -1
  82. package/dist/src/layer/pointCloudLayer.js +2 -2
  83. package/dist/src/layer/pointCloudLayer.js.map +1 -1
  84. package/dist/src/layer/terrainHelpers.d.ts +3 -3
  85. package/dist/src/layer/terrainHelpers.js +12 -7
  86. package/dist/src/layer/terrainHelpers.js.map +1 -1
  87. package/dist/src/layer/terrainLayer.js +1 -1
  88. package/dist/src/layer/terrainLayer.js.map +1 -1
  89. package/dist/src/layer/tileProvider/mvtTileProvider.d.ts +1 -1
  90. package/dist/src/layer/tileProvider/mvtTileProvider.js +4 -3
  91. package/dist/src/layer/tileProvider/mvtTileProvider.js.map +1 -1
  92. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.d.ts +1 -1
  93. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.js +4 -3
  94. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.js.map +1 -1
  95. package/dist/src/layer/tileProvider/tileProvider.d.ts +14 -11
  96. package/dist/src/layer/tileProvider/tileProvider.js +23 -20
  97. package/dist/src/layer/tileProvider/tileProvider.js.map +1 -1
  98. package/dist/src/layer/tileProvider/urlTemplateTileProvider.d.ts +1 -1
  99. package/dist/src/layer/tileProvider/urlTemplateTileProvider.js +4 -3
  100. package/dist/src/layer/tileProvider/urlTemplateTileProvider.js.map +1 -1
  101. package/dist/src/layer/vectorLayer.d.ts +1 -2
  102. package/dist/src/layer/vectorLayer.js +3 -3
  103. package/dist/src/layer/vectorLayer.js.map +1 -1
  104. package/dist/src/layer/vectorProperties.d.ts +11 -16
  105. package/dist/src/layer/vectorProperties.js +16 -13
  106. package/dist/src/layer/vectorProperties.js.map +1 -1
  107. package/dist/src/layer/wfsLayer.js +9 -6
  108. package/dist/src/layer/wfsLayer.js.map +1 -1
  109. package/dist/src/layer/wmsHelpers.d.ts +10 -0
  110. package/dist/src/layer/wmsHelpers.js +53 -12
  111. package/dist/src/layer/wmsHelpers.js.map +1 -1
  112. package/dist/src/layer/wmsLayer.d.ts +6 -0
  113. package/dist/src/layer/wmsLayer.js +5 -2
  114. package/dist/src/layer/wmsLayer.js.map +1 -1
  115. package/dist/src/map/cameraLimiter.d.ts +5 -0
  116. package/dist/src/map/cameraLimiter.js +11 -4
  117. package/dist/src/map/cameraLimiter.js.map +1 -1
  118. package/dist/src/map/cesiumMap.d.ts +20 -1
  119. package/dist/src/map/cesiumMap.js +51 -2
  120. package/dist/src/map/cesiumMap.js.map +1 -1
  121. package/dist/src/map/vcsMap.js +2 -2
  122. package/dist/src/map/vcsMap.js.map +1 -1
  123. package/dist/src/oblique/helpers.d.ts +1 -1
  124. package/dist/src/oblique/helpers.js +5 -9
  125. package/dist/src/oblique/helpers.js.map +1 -1
  126. package/dist/src/oblique/obliqueCollection.d.ts +1 -0
  127. package/dist/src/oblique/obliqueCollection.js +1 -1
  128. package/dist/src/oblique/obliqueCollection.js.map +1 -1
  129. package/dist/src/oblique/obliqueDataSet.d.ts +3 -1
  130. package/dist/src/oblique/obliqueDataSet.js +13 -6
  131. package/dist/src/oblique/obliqueDataSet.js.map +1 -1
  132. package/dist/src/oblique/obliqueImageMeta.d.ts +2 -0
  133. package/dist/src/oblique/obliqueImageMeta.js +2 -0
  134. package/dist/src/oblique/obliqueImageMeta.js.map +1 -1
  135. package/dist/src/oblique/obliqueView.d.ts +1 -0
  136. package/dist/src/oblique/obliqueView.js +12 -2
  137. package/dist/src/oblique/obliqueView.js.map +1 -1
  138. package/dist/src/oblique/parseImageJson.d.ts +6 -5
  139. package/dist/src/oblique/parseImageJson.js +7 -5
  140. package/dist/src/oblique/parseImageJson.js.map +1 -1
  141. package/dist/src/ol/geom/circle.js.map +1 -1
  142. package/dist/src/style/declarativeStyleItem.js +10 -2
  143. package/dist/src/style/declarativeStyleItem.js.map +1 -1
  144. package/dist/src/style/styleFactory.js +2 -2
  145. package/dist/src/style/styleFactory.js.map +1 -1
  146. package/dist/src/style/styleHelpers.js +13 -3
  147. package/dist/src/style/styleHelpers.js.map +1 -1
  148. package/dist/src/style/vectorStyleItem.js +29 -16
  149. package/dist/src/style/vectorStyleItem.js.map +1 -1
  150. package/dist/src/util/clipping/clippingPlaneHelper.js +3 -3
  151. package/dist/src/util/clipping/clippingPlaneHelper.js.map +1 -1
  152. package/dist/src/util/editor/createFeatureSession.d.ts +2 -2
  153. package/dist/src/util/editor/createFeatureSession.js +2 -2
  154. package/dist/src/util/editor/createFeatureSession.js.map +1 -1
  155. package/dist/src/util/editor/editFeaturesSession.d.ts +2 -2
  156. package/dist/src/util/editor/editGeometrySession.d.ts +2 -2
  157. package/dist/src/util/editor/editorSessionHelpers.d.ts +2 -2
  158. package/dist/src/util/editor/selectFeaturesSession.d.ts +2 -2
  159. package/dist/src/util/editor/selectFeaturesSession.js +2 -2
  160. package/dist/src/util/editor/selectFeaturesSession.js.map +1 -1
  161. package/dist/src/util/featureconverter/arcToCesium.d.ts +1 -1
  162. package/dist/src/util/featureconverter/arcToCesium.js +5 -2
  163. package/dist/src/util/featureconverter/arcToCesium.js.map +1 -1
  164. package/dist/src/util/featureconverter/circleToCesium.d.ts +4 -2
  165. package/dist/src/util/featureconverter/circleToCesium.js +8 -3
  166. package/dist/src/util/featureconverter/circleToCesium.js.map +1 -1
  167. package/dist/src/util/featureconverter/extent3D.js.map +1 -1
  168. package/dist/src/util/featureconverter/featureconverterHelper.js +2 -2
  169. package/dist/src/util/featureconverter/featureconverterHelper.js.map +1 -1
  170. package/dist/src/util/featureconverter/lineStringToCesium.d.ts +3 -1
  171. package/dist/src/util/featureconverter/lineStringToCesium.js +7 -2
  172. package/dist/src/util/featureconverter/lineStringToCesium.js.map +1 -1
  173. package/dist/src/util/featureconverter/pointToCesium.js +1 -1
  174. package/dist/src/util/featureconverter/pointToCesium.js.map +1 -1
  175. package/dist/src/util/featureconverter/polygonToCesium.d.ts +3 -3
  176. package/dist/src/util/featureconverter/polygonToCesium.js +9 -15
  177. package/dist/src/util/featureconverter/polygonToCesium.js.map +1 -1
  178. package/dist/src/util/fetch.d.ts +2 -0
  179. package/dist/src/util/fetch.js +16 -0
  180. package/dist/src/util/fetch.js.map +1 -1
  181. package/dist/src/util/flight/flightAnchor.d.ts +23 -0
  182. package/dist/src/util/flight/flightAnchor.js +152 -0
  183. package/dist/src/util/flight/flightAnchor.js.map +1 -0
  184. package/dist/src/util/flight/flightCollection.d.ts +25 -0
  185. package/dist/src/util/flight/flightCollection.js +63 -0
  186. package/dist/src/util/flight/flightCollection.js.map +1 -0
  187. package/dist/src/util/flight/flightHelpers.d.ts +29 -0
  188. package/dist/src/util/flight/flightHelpers.js +134 -0
  189. package/dist/src/util/flight/flightHelpers.js.map +1 -0
  190. package/dist/src/util/flight/flightInstance.d.ts +57 -0
  191. package/dist/src/util/flight/flightInstance.js +166 -0
  192. package/dist/src/util/flight/flightInstance.js.map +1 -0
  193. package/dist/src/util/flight/flightPlayer.d.ts +30 -0
  194. package/dist/src/util/flight/flightPlayer.js +247 -0
  195. package/dist/src/util/flight/flightPlayer.js.map +1 -0
  196. package/dist/src/util/flight/flightVisualizer.d.ts +18 -0
  197. package/dist/src/util/flight/flightVisualizer.js +151 -0
  198. package/dist/src/util/flight/flightVisualizer.js.map +1 -0
  199. package/dist/src/util/hiddenObjects.d.ts +8 -0
  200. package/dist/src/util/hiddenObjects.js +17 -0
  201. package/dist/src/util/hiddenObjects.js.map +1 -0
  202. package/dist/src/util/mapCollection.js +2 -2
  203. package/dist/src/util/mapCollection.js.map +1 -1
  204. package/dist/src/util/overrideCollection.d.ts +8 -3
  205. package/dist/src/util/overrideCollection.js +17 -0
  206. package/dist/src/util/overrideCollection.js.map +1 -1
  207. package/dist/src/util/projection.js +5 -2
  208. package/dist/src/util/projection.js.map +1 -1
  209. package/dist/src/util/viewpoint.d.ts +1 -0
  210. package/dist/src/util/viewpoint.js +24 -7
  211. package/dist/src/util/viewpoint.js.map +1 -1
  212. package/dist/src/vcsApp.d.ts +10 -3
  213. package/dist/src/vcsApp.js +34 -15
  214. package/dist/src/vcsApp.js.map +1 -1
  215. package/dist/src/vcsModule.d.ts +4 -0
  216. package/dist/src/vcsModule.js.map +1 -1
  217. package/dist/tests/unit/helpers/cesiumHelpers.d.ts +2 -2
  218. package/dist/tests/unit/helpers/cesiumHelpers.js +2 -1
  219. package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
  220. package/dist/tests/unit/helpers/terrain/terrainData.d.ts +7 -0
  221. package/dist/tests/unit/helpers/terrain/terrainData.js +2 -2
  222. package/dist/tests/unit/helpers/terrain/terrainData.js.map +1 -1
  223. package/index.ts +39 -1
  224. package/package.json +4 -2
  225. package/src/classRegistry.ts +2 -2
  226. package/src/featureProvider/abstractFeatureProvider.ts +2 -0
  227. package/src/featureProvider/tileProviderFeatureProvider.ts +2 -0
  228. package/src/featureProvider/wmsFeatureProvider.ts +4 -2
  229. package/src/interaction/eventHandler.ts +3 -3
  230. package/src/interaction/featureProviderInteraction.ts +1 -0
  231. package/src/layer/cesium/cesiumTilesetCesiumImpl.ts +44 -5
  232. package/src/layer/cesium/resourceHelper.ts +15 -0
  233. package/src/layer/cesium/singleImageCesiumImpl.ts +2 -1
  234. package/src/layer/cesium/terrainCesiumImpl.ts +2 -1
  235. package/src/layer/cesium/tmsCesiumImpl.ts +2 -1
  236. package/src/layer/cesium/vectorRasterTileCesiumImpl.ts +1 -0
  237. package/src/layer/cesium/vectorTileImageryProvider.ts +10 -1
  238. package/src/layer/cesium/wmsCesiumImpl.ts +2 -1
  239. package/src/layer/cesium/wmtsCesiumImpl.ts +4 -2
  240. package/src/layer/cesiumTilesetLayer.ts +25 -7
  241. package/src/layer/czmlLayer.ts +2 -1
  242. package/src/layer/featureLayer.ts +2 -2
  243. package/src/layer/featureStoreLayer.ts +8 -8
  244. package/src/layer/featureStoreLayerChanges.ts +63 -45
  245. package/src/layer/featureStoreLayerState.ts +6 -5
  246. package/src/layer/geojsonLayer.ts +3 -3
  247. package/src/layer/layer.ts +41 -4
  248. package/src/layer/layerImplementation.ts +3 -0
  249. package/src/layer/oblique/vectorObliqueImpl.ts +9 -8
  250. package/src/layer/openlayers/loadFunctionHelpers.ts +24 -0
  251. package/src/layer/openlayers/singleImageOpenlayersImpl.ts +25 -1
  252. package/src/layer/openlayers/tmsOpenlayersImpl.ts +8 -1
  253. package/src/layer/openlayers/vectorTileOpenlayersImpl.ts +1 -0
  254. package/src/layer/openlayers/wmsOpenlayersImpl.ts +23 -2
  255. package/src/layer/openlayers/wmtsOpenlayersImpl.ts +8 -1
  256. package/src/layer/pointCloudLayer.ts +2 -2
  257. package/src/layer/terrainHelpers.ts +19 -6
  258. package/src/layer/terrainLayer.ts +8 -4
  259. package/src/layer/tileProvider/mvtTileProvider.ts +9 -3
  260. package/src/layer/tileProvider/staticGeojsonTileProvider.ts +9 -3
  261. package/src/layer/tileProvider/tileProvider.ts +49 -13
  262. package/src/layer/tileProvider/urlTemplateTileProvider.ts +10 -3
  263. package/src/layer/vectorLayer.ts +9 -9
  264. package/src/layer/vectorProperties.ts +46 -22
  265. package/src/layer/wfsLayer.ts +9 -6
  266. package/src/layer/wmsHelpers.ts +78 -10
  267. package/src/layer/wmsLayer.ts +11 -2
  268. package/src/map/cameraLimiter.ts +21 -2
  269. package/src/map/cesiumMap.ts +67 -2
  270. package/src/map/vcsMap.ts +2 -2
  271. package/src/oblique/helpers.ts +5 -13
  272. package/src/oblique/obliqueCollection.ts +2 -0
  273. package/src/oblique/obliqueDataSet.ts +16 -2
  274. package/src/oblique/obliqueImageMeta.ts +4 -0
  275. package/src/oblique/obliqueView.ts +12 -2
  276. package/src/oblique/parseImageJson.ts +7 -4
  277. package/src/ol/geojson.d.ts +1 -2
  278. package/src/ol/geom/circle.ts +1 -1
  279. package/src/style/declarativeStyleItem.ts +10 -2
  280. package/src/style/styleFactory.ts +2 -2
  281. package/src/style/styleHelpers.ts +13 -4
  282. package/src/style/vectorStyleItem.ts +32 -20
  283. package/src/util/clipping/clippingPlaneHelper.ts +3 -3
  284. package/src/util/editor/createFeatureSession.ts +9 -8
  285. package/src/util/editor/editFeaturesSession.ts +1 -1
  286. package/src/util/editor/editGeometrySession.ts +1 -1
  287. package/src/util/editor/editorSessionHelpers.ts +2 -2
  288. package/src/util/editor/selectFeaturesSession.ts +3 -3
  289. package/src/util/featureconverter/arcToCesium.ts +5 -1
  290. package/src/util/featureconverter/circleToCesium.ts +8 -2
  291. package/src/util/featureconverter/extent3D.ts +1 -1
  292. package/src/util/featureconverter/featureconverterHelper.ts +3 -5
  293. package/src/util/featureconverter/lineStringToCesium.ts +8 -1
  294. package/src/util/featureconverter/pointToCesium.ts +1 -1
  295. package/src/util/featureconverter/polygonToCesium.ts +6 -15
  296. package/src/util/fetch.ts +25 -0
  297. package/src/util/flight/flightAnchor.ts +195 -0
  298. package/src/util/flight/flightCollection.ts +78 -0
  299. package/src/util/flight/flightHelpers.ts +208 -0
  300. package/src/util/flight/flightInstance.ts +240 -0
  301. package/src/util/flight/flightPlayer.ts +326 -0
  302. package/src/util/flight/flightVisualizer.ts +202 -0
  303. package/src/util/hiddenObjects.ts +35 -0
  304. package/src/util/mapCollection.ts +2 -2
  305. package/src/util/overrideCollection.ts +26 -3
  306. package/src/util/projection.ts +5 -2
  307. package/src/util/viewpoint.ts +27 -7
  308. package/src/vcsApp.ts +56 -15
  309. package/src/vcsModule.ts +4 -0
@@ -0,0 +1,25 @@
1
+ import Collection from '../collection.js';
2
+ import { FlightPlayer } from './flightPlayer.js';
3
+ import VcsEvent from '../../vcsEvent.js';
4
+ import FlightInstance from './flightInstance.js';
5
+ import type VcsApp from '../../vcsApp.js';
6
+ /**
7
+ * A collection of flights. Provides playFlight API, which returns a FlightPlayer.
8
+ * Emits playerChanged event, whenever another flight is played.
9
+ */
10
+ declare class FlightCollection extends Collection<FlightInstance> {
11
+ private readonly _app;
12
+ private _player;
13
+ playerChanged: VcsEvent<FlightPlayer | undefined>;
14
+ private _playerDestroyedListener;
15
+ constructor(app: VcsApp);
16
+ get player(): FlightPlayer | undefined;
17
+ remove(item: FlightInstance): void;
18
+ /**
19
+ * Creates a FlightPlayer for a flight instance, if not already existing for provided instance
20
+ * @param flight
21
+ */
22
+ setPlayerForFlight(flight: FlightInstance): Promise<FlightPlayer | undefined>;
23
+ destroy(): void;
24
+ }
25
+ export default FlightCollection;
@@ -0,0 +1,63 @@
1
+ import Collection from '../collection.js';
2
+ import { createFlightPlayer } from './flightPlayer.js';
3
+ import VcsEvent from '../../vcsEvent.js';
4
+ /**
5
+ * A collection of flights. Provides playFlight API, which returns a FlightPlayer.
6
+ * Emits playerChanged event, whenever another flight is played.
7
+ */
8
+ class FlightCollection extends Collection {
9
+ _app;
10
+ _player;
11
+ playerChanged;
12
+ _playerDestroyedListener;
13
+ constructor(app) {
14
+ super();
15
+ this._app = app;
16
+ this._player = undefined;
17
+ this.playerChanged = new VcsEvent();
18
+ this._playerDestroyedListener = () => { };
19
+ }
20
+ get player() {
21
+ return this._player;
22
+ }
23
+ remove(item) {
24
+ if (this._player?.flightInstanceName === item.name) {
25
+ this._player.stop();
26
+ this._player.destroy();
27
+ }
28
+ super.remove(item);
29
+ }
30
+ /**
31
+ * Creates a FlightPlayer for a flight instance, if not already existing for provided instance
32
+ * @param flight
33
+ */
34
+ async setPlayerForFlight(flight) {
35
+ if (this._player?.flightInstanceName === flight.name) {
36
+ return this._player;
37
+ }
38
+ else if (this._player) {
39
+ this._playerDestroyedListener();
40
+ this._player.stop();
41
+ this._player.destroy();
42
+ }
43
+ this._player = await createFlightPlayer(flight, this._app);
44
+ this.playerChanged.raiseEvent(this._player);
45
+ this._playerDestroyedListener = this._player.destroyed.addEventListener(() => {
46
+ this._player = undefined;
47
+ this.playerChanged.raiseEvent(undefined);
48
+ });
49
+ return this._player;
50
+ }
51
+ destroy() {
52
+ if (this._player) {
53
+ this._player.stop();
54
+ this._player.destroy();
55
+ this._player = undefined;
56
+ }
57
+ this.playerChanged.destroy();
58
+ this._playerDestroyedListener();
59
+ super.destroy();
60
+ }
61
+ }
62
+ export default FlightCollection;
63
+ //# sourceMappingURL=flightCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flightCollection.js","sourceRoot":"","sources":["../../../../src/util/flight/flightCollection.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAgB,MAAM,mBAAmB,CAAC;AACrE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAIzC;;;GAGG;AACH,MAAM,gBAAiB,SAAQ,UAA0B;IACtC,IAAI,CAAS;IAEtB,OAAO,CAA2B;IAE1C,aAAa,CAAqC;IAE1C,wBAAwB,CAAa;IAE7C,YAAY,GAAW;QACrB,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,QAAQ,EAA4B,CAAC;QAC9D,IAAI,CAAC,wBAAwB,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,IAAoB;QACzB,IAAI,IAAI,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC,IAAI,EAAE;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACxB;QACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CACtB,MAAsB;QAEtB,IAAI,IAAI,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,CAAC,IAAI,EAAE;YACpD,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACvB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACxB;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CACrE,GAAG,EAAE;YACH,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC,CACF,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { CatmullRomSpline, LinearSpline, QuaternionSpline } from '@vcmap-cesium/engine';
2
+ import type { FeatureCollection, Point as GeojsonPoint, LineString as GeojsonLineString } from 'geojson';
3
+ import type { Coordinate } from 'ol/coordinate.js';
4
+ import type { default as FlightInstance, FlightInstanceOptions } from './flightInstance.js';
5
+ import { FlightAnchorGeojsonFeature } from './flightAnchor.js';
6
+ /**
7
+ * exports a flight as GeoJson FeatureCollection
8
+ * {Object} vcsMeta.flightOptions: flight settings
9
+ * {Array} feature: viewpoints
10
+ *
11
+ * @param flightInstance
12
+ */
13
+ export declare function exportFlightAsGeoJson(flightInstance: FlightInstance): FeatureCollection<GeojsonPoint>;
14
+ export declare function getSplineAndTimesForInstance(flightInstance: FlightInstance): {
15
+ destinationSpline: CatmullRomSpline | LinearSpline;
16
+ quaternionSpline: QuaternionSpline;
17
+ times: number[];
18
+ };
19
+ export declare function getFlightPathCoordinatesFromInstance(flightInstance: FlightInstance): Coordinate[];
20
+ export declare function exportFlightPathAsGeoJson(flightInstance: FlightInstance): FeatureCollection<GeojsonLineString>;
21
+ /**
22
+ * parses source and creates a flight Object
23
+ * @param {Object} collection GeoJSON
24
+ * containing:
25
+ * {Object} vcsMeta containing flightOptions
26
+ * {Array} features anchors of flightInstance
27
+ * @returns
28
+ */
29
+ export declare function parseFlightOptionsFromGeoJson(collection: FeatureCollection<GeojsonPoint, FlightAnchorGeojsonFeature['properties']>): FlightInstanceOptions;
@@ -0,0 +1,134 @@
1
+ import { HeadingPitchRoll, Cartesian3, Quaternion, CatmullRomSpline, LinearSpline, QuaternionSpline, Cartographic, Math as CesiumMath, } from '@vcmap-cesium/engine';
2
+ import { vcsMetaVersion } from '../../layer/vectorProperties.js';
3
+ /**
4
+ * exports a flight as GeoJson FeatureCollection
5
+ * {Object} vcsMeta.flightOptions: flight settings
6
+ * {Array} feature: viewpoints
7
+ *
8
+ * @param flightInstance
9
+ */
10
+ export function exportFlightAsGeoJson(flightInstance) {
11
+ const options = flightInstance.toJSON();
12
+ const flightOptions = {};
13
+ if (options.loop != null) {
14
+ flightOptions.loop = options.loop;
15
+ }
16
+ if (options.interpolation != null) {
17
+ flightOptions.interpolation = options.interpolation;
18
+ }
19
+ if (options.multiplier != null) {
20
+ flightOptions.multiplier = options.multiplier;
21
+ }
22
+ return {
23
+ type: 'FeatureCollection',
24
+ features: options.anchors ?? [],
25
+ vcsMeta: {
26
+ version: vcsMetaVersion,
27
+ flightOptions: options,
28
+ },
29
+ };
30
+ }
31
+ export function getSplineAndTimesForInstance(flightInstance) {
32
+ const { loop, anchors } = flightInstance;
33
+ const anchorsArray = [...anchors];
34
+ const length = loop ? anchors.size + 1 : anchors.size;
35
+ const points = new Array(length);
36
+ const quaternions = new Array(length);
37
+ const times = new Array(length);
38
+ anchorsArray.forEach((anchor, index) => {
39
+ points[index] = Cartesian3.fromDegrees(anchor.coordinate[0], anchor.coordinate[1], anchor.coordinate[2]);
40
+ quaternions[index] = Quaternion.fromHeadingPitchRoll(HeadingPitchRoll.fromDegrees(anchor.heading, anchor.pitch, anchor.roll));
41
+ if (index > 0) {
42
+ let previousDuration = anchorsArray[index - 1].duration;
43
+ if (!previousDuration) {
44
+ previousDuration =
45
+ Cartesian3.distance(points[index - 1], points[index]) / 300 || 1;
46
+ }
47
+ times[index] = times[index - 1] + previousDuration;
48
+ }
49
+ else {
50
+ times[index] = 0;
51
+ }
52
+ });
53
+ if (loop) {
54
+ points[length - 1] = Cartesian3.fromDegrees(anchorsArray[0].coordinate[0], anchorsArray[0].coordinate[1], anchorsArray[0].coordinate[2]);
55
+ quaternions[length - 1] = Quaternion.fromHeadingPitchRoll(HeadingPitchRoll.fromDegrees(anchorsArray[0].heading, anchorsArray[0].pitch, anchorsArray[0].roll));
56
+ let loopDuration = anchorsArray[length - 2].duration;
57
+ if (!loopDuration) {
58
+ loopDuration =
59
+ Cartesian3.distance(points[length - 2], points[length - 1]) / 300 || 1;
60
+ }
61
+ times[length - 1] = times[length - 2] + loopDuration;
62
+ }
63
+ const destinationSpline = flightInstance.interpolation === 'spline'
64
+ ? new CatmullRomSpline({ times, points })
65
+ : new LinearSpline({ times, points });
66
+ const quaternionSpline = new QuaternionSpline({ times, points: quaternions });
67
+ return {
68
+ destinationSpline,
69
+ quaternionSpline,
70
+ times,
71
+ };
72
+ }
73
+ export function getFlightPathCoordinatesFromInstance(flightInstance) {
74
+ const pathCoordinates = [];
75
+ if (flightInstance.interpolation === 'spline') {
76
+ const { destinationSpline, times } = getSplineAndTimesForInstance(flightInstance);
77
+ const scratchCartographic = new Cartographic();
78
+ const addCoordinateFromTime = (time) => {
79
+ Cartographic.fromCartesian(destinationSpline.evaluate(time), undefined, scratchCartographic);
80
+ pathCoordinates.push([
81
+ CesiumMath.toDegrees(scratchCartographic.longitude),
82
+ CesiumMath.toDegrees(scratchCartographic.latitude),
83
+ scratchCartographic.height,
84
+ ]);
85
+ };
86
+ const endTime = times[times.length - 1];
87
+ const step = endTime / 0.2 > 500 ? endTime / 500 : 0.2;
88
+ for (let i = 0; i < endTime; i += step) {
89
+ addCoordinateFromTime(i);
90
+ }
91
+ addCoordinateFromTime(endTime);
92
+ }
93
+ else {
94
+ for (const anchor of flightInstance.anchors) {
95
+ pathCoordinates.push(anchor.coordinate);
96
+ }
97
+ if (flightInstance.loop) {
98
+ pathCoordinates.push(pathCoordinates[0]);
99
+ }
100
+ }
101
+ return pathCoordinates;
102
+ }
103
+ export function exportFlightPathAsGeoJson(flightInstance) {
104
+ const coordinates = getFlightPathCoordinatesFromInstance(flightInstance);
105
+ return {
106
+ type: 'FeatureCollection',
107
+ features: [
108
+ {
109
+ type: 'Feature',
110
+ geometry: {
111
+ type: 'LineString',
112
+ coordinates,
113
+ },
114
+ properties: {},
115
+ },
116
+ ],
117
+ };
118
+ }
119
+ /**
120
+ * parses source and creates a flight Object
121
+ * @param {Object} collection GeoJSON
122
+ * containing:
123
+ * {Object} vcsMeta containing flightOptions
124
+ * {Array} features anchors of flightInstance
125
+ * @returns
126
+ */
127
+ export function parseFlightOptionsFromGeoJson(collection) {
128
+ const flightOptions = collection.vcsMeta && collection.vcsMeta.flightOptions
129
+ ? collection.vcsMeta.flightOptions
130
+ : {};
131
+ flightOptions.anchors = collection.features;
132
+ return flightOptions;
133
+ }
134
+ //# sourceMappingURL=flightHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flightHelpers.js","sourceRoot":"","sources":["../../../../src/util/flight/flightHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import VcsObject, { VcsObjectOptions } from '../../vcsObject.js';
2
+ import VcsEvent from '../../vcsEvent.js';
3
+ import { FlightAnchor, FlightAnchorGeojsonFeature } from './flightAnchor.js';
4
+ import IndexedCollection from '../indexedCollection.js';
5
+ export type FlightInterpolation = 'spline' | 'linear';
6
+ export type FlightInstanceMeta = VcsObjectOptions & {
7
+ multiplier?: number;
8
+ interpolation?: FlightInterpolation;
9
+ loop?: boolean;
10
+ };
11
+ export type FlightInstanceOptions = FlightInstanceMeta & {
12
+ anchors?: FlightAnchorGeojsonFeature[];
13
+ url?: string;
14
+ };
15
+ declare class FlightInstance extends VcsObject {
16
+ static get className(): string;
17
+ anchors: IndexedCollection<FlightAnchor>;
18
+ private _multiplier;
19
+ private _loop;
20
+ private _interpolation;
21
+ /**
22
+ * Raised when anchors are added, removed, moved or changed
23
+ */
24
+ anchorsChanged: VcsEvent<void>;
25
+ /**
26
+ * Raised when multiplier, loop or interpolation changes.
27
+ */
28
+ propertyChanged: VcsEvent<"multiplier" | "loop" | "interpolation">;
29
+ private readonly _url;
30
+ private _readyPromise;
31
+ private _anchorListeners;
32
+ static getDefaultOptions(): FlightInstanceOptions;
33
+ constructor(options: FlightInstanceOptions);
34
+ get initialized(): boolean;
35
+ get multiplier(): number;
36
+ set multiplier(value: number);
37
+ /**
38
+ * Whether this flight represents a circular flight path or not
39
+ */
40
+ get loop(): boolean;
41
+ set loop(value: boolean);
42
+ get interpolation(): FlightInterpolation;
43
+ set interpolation(value: FlightInterpolation);
44
+ initialize(): Promise<void>;
45
+ /**
46
+ * checks if this flightInstance is valid. To be valid, a flight must have at least 2 anchors.
47
+ * @returns
48
+ */
49
+ isValid(): boolean;
50
+ /**
51
+ * returns an options object for this flight. if this flight was configured via an URL, only the url will be configured.
52
+ * @returns
53
+ */
54
+ toJSON(): FlightInstanceOptions;
55
+ destroy(): void;
56
+ }
57
+ export default FlightInstance;
@@ -0,0 +1,166 @@
1
+ import { parseBoolean, parseNumber } from '@vcsuite/parsers';
2
+ import { check, oneOf } from '@vcsuite/check';
3
+ import VcsObject from '../../vcsObject.js';
4
+ import VcsEvent from '../../vcsEvent.js';
5
+ import { parseFlightOptionsFromGeoJson } from './flightHelpers.js';
6
+ import { requestJson } from '../fetch.js';
7
+ import { anchorFromGeojsonFeature, anchorToGeojsonFeature, } from './flightAnchor.js';
8
+ import IndexedCollection from '../indexedCollection.js';
9
+ import { destroyCollection } from '../../vcsModuleHelpers.js';
10
+ class FlightInstance extends VcsObject {
11
+ static get className() {
12
+ return 'FlightInstance';
13
+ }
14
+ anchors;
15
+ _multiplier;
16
+ _loop;
17
+ _interpolation;
18
+ /**
19
+ * Raised when anchors are added, removed, moved or changed
20
+ */
21
+ anchorsChanged = new VcsEvent();
22
+ /**
23
+ * Raised when multiplier, loop or interpolation changes.
24
+ */
25
+ propertyChanged = new VcsEvent();
26
+ _url;
27
+ _readyPromise = null;
28
+ _anchorListeners = new Map();
29
+ static getDefaultOptions() {
30
+ return {
31
+ multiplier: 1,
32
+ loop: false,
33
+ interpolation: 'spline',
34
+ anchors: [],
35
+ };
36
+ }
37
+ constructor(options) {
38
+ super(options);
39
+ const defaultOptions = FlightInstance.getDefaultOptions();
40
+ const anchorsArray = (options.anchors ?? defaultOptions.anchors)
41
+ .map(anchorFromGeojsonFeature)
42
+ .filter((a) => !!a);
43
+ this.anchors = IndexedCollection.from(anchorsArray);
44
+ this._multiplier = parseNumber(options.multiplier, defaultOptions.multiplier);
45
+ this._loop = parseBoolean(options.loop, defaultOptions.loop);
46
+ this._interpolation =
47
+ options.interpolation || defaultOptions.interpolation;
48
+ this.anchorsChanged = new VcsEvent();
49
+ this._url = options.url;
50
+ }
51
+ get initialized() {
52
+ return !!this._readyPromise;
53
+ }
54
+ get multiplier() {
55
+ return this._multiplier;
56
+ }
57
+ set multiplier(value) {
58
+ check(value, Number);
59
+ if (this._multiplier !== value) {
60
+ this._multiplier = value;
61
+ this.propertyChanged.raiseEvent('multiplier');
62
+ }
63
+ }
64
+ /**
65
+ * Whether this flight represents a circular flight path or not
66
+ */
67
+ get loop() {
68
+ return this._loop;
69
+ }
70
+ set loop(value) {
71
+ check(value, Boolean);
72
+ if (this._loop !== value) {
73
+ this._loop = value;
74
+ this.propertyChanged.raiseEvent('loop');
75
+ }
76
+ }
77
+ get interpolation() {
78
+ return this._interpolation;
79
+ }
80
+ set interpolation(value) {
81
+ check(value, oneOf('linear', 'spline'));
82
+ if (this._interpolation !== value) {
83
+ this._interpolation = value;
84
+ this.propertyChanged.raiseEvent('interpolation');
85
+ }
86
+ }
87
+ initialize() {
88
+ if (!this._readyPromise) {
89
+ if (this._url) {
90
+ this._readyPromise = requestJson(this._url).then((collection) => {
91
+ const instance = parseFlightOptionsFromGeoJson(collection);
92
+ (instance.anchors ?? [])
93
+ .map(anchorFromGeojsonFeature)
94
+ .filter((a) => !!a)
95
+ .forEach((anchor) => this.anchors.add(anchor));
96
+ this._multiplier = instance.multiplier ?? this._multiplier;
97
+ this._loop = instance.loop ?? this._loop;
98
+ this._interpolation = instance.interpolation ?? this._interpolation;
99
+ });
100
+ }
101
+ else {
102
+ this._readyPromise = Promise.resolve();
103
+ }
104
+ for (const anchor of this.anchors) {
105
+ this._anchorListeners.set(anchor.name, anchor.changed.addEventListener(() => {
106
+ this.anchorsChanged.raiseEvent();
107
+ }));
108
+ }
109
+ this.anchors.added.addEventListener((anchor) => {
110
+ this._anchorListeners.set(anchor.name, anchor.changed.addEventListener(() => {
111
+ this.anchorsChanged.raiseEvent();
112
+ }));
113
+ this.anchorsChanged.raiseEvent();
114
+ });
115
+ this.anchors.removed.addEventListener((anchor) => {
116
+ this._anchorListeners.get(anchor.name)?.();
117
+ this._anchorListeners.delete(anchor.name);
118
+ this.anchorsChanged.raiseEvent();
119
+ });
120
+ this.anchors.moved.addEventListener(() => {
121
+ this.anchorsChanged.raiseEvent();
122
+ });
123
+ }
124
+ return this._readyPromise;
125
+ }
126
+ /**
127
+ * checks if this flightInstance is valid. To be valid, a flight must have at least 2 anchors.
128
+ * @returns
129
+ */
130
+ isValid() {
131
+ return this.anchors.size >= 2;
132
+ }
133
+ /**
134
+ * returns an options object for this flight. if this flight was configured via an URL, only the url will be configured.
135
+ * @returns
136
+ */
137
+ toJSON() {
138
+ const config = super.toJSON();
139
+ if (this._url) {
140
+ config.url = this._url;
141
+ return config;
142
+ }
143
+ const defaultOptions = FlightInstance.getDefaultOptions();
144
+ if (this._multiplier !== defaultOptions.multiplier) {
145
+ config.multiplier = this._multiplier;
146
+ }
147
+ if (this._loop !== defaultOptions.loop) {
148
+ config.loop = this._loop;
149
+ }
150
+ if (this._interpolation !== defaultOptions.interpolation) {
151
+ config.interpolation = this._interpolation;
152
+ }
153
+ if (this.anchors.size > 0) {
154
+ config.anchors = [...this.anchors].map(anchorToGeojsonFeature);
155
+ }
156
+ return config;
157
+ }
158
+ destroy() {
159
+ this.anchorsChanged.destroy();
160
+ destroyCollection(this.anchors);
161
+ this._anchorListeners.clear();
162
+ super.destroy();
163
+ }
164
+ }
165
+ export default FlightInstance;
166
+ //# sourceMappingURL=flightInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flightInstance.js","sourceRoot":"","sources":["../../../../src/util/flight/flightInstance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import FlightInstance from './flightInstance.js';
2
+ import VcsEvent from '../../vcsEvent.js';
3
+ import VcsApp from '../../vcsApp.js';
4
+ export type FlightPlayerClock = {
5
+ startTime: number;
6
+ endTime: number;
7
+ currentTime: number;
8
+ times: number[];
9
+ currentSystemTime?: number;
10
+ };
11
+ export type FlightPlayerState = 'playing' | 'paused' | 'stopped';
12
+ export type FlightPlayer = {
13
+ readonly flightInstanceName: string;
14
+ readonly state: FlightPlayerState;
15
+ readonly stateChanged: VcsEvent<FlightPlayerState>;
16
+ readonly destroyed: VcsEvent<void>;
17
+ clock: FlightPlayerClock;
18
+ play(): void;
19
+ stop(): void;
20
+ pause(): void;
21
+ /**
22
+ * jumps to the given time
23
+ * @param time time in seconds
24
+ */
25
+ goToTime(time: number): void;
26
+ forward(): void;
27
+ backward(): void;
28
+ destroy(): void;
29
+ };
30
+ export declare function createFlightPlayer(instance: FlightInstance, app: VcsApp): Promise<FlightPlayer>;