@vcmap/core 6.0.0-rc.7 → 6.0.0-rc.9

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 (229) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/category/category.d.ts +2 -1
  5. package/dist/src/category/category.js +2 -1
  6. package/dist/src/category/category.js.map +1 -1
  7. package/dist/src/category/categoryCollection.js.map +1 -1
  8. package/dist/src/cesium/cesiumVcsCameraPrimitive.js.map +1 -1
  9. package/dist/src/classRegistry.d.ts +1 -1
  10. package/dist/src/classRegistry.js.map +1 -1
  11. package/dist/src/featureProvider/abstractFeatureProvider.js.map +1 -1
  12. package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
  13. package/dist/src/interaction/abstractInteraction.js.map +1 -1
  14. package/dist/src/interaction/coordinateAtPixel.js.map +1 -1
  15. package/dist/src/interaction/eventHandler.js.map +1 -1
  16. package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
  17. package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
  18. package/dist/src/interaction/interactionChain.js.map +1 -1
  19. package/dist/src/interaction/interactionType.js +4 -4
  20. package/dist/src/interaction/interactionType.js.map +1 -1
  21. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js.map +1 -1
  22. package/dist/src/layer/cesium/clusterContext.js.map +1 -1
  23. package/dist/src/layer/cesium/dataSourceCesiumImpl.js.map +1 -1
  24. package/dist/src/layer/cesium/rasterLayerCesiumImpl.js.map +1 -1
  25. package/dist/src/layer/cesium/resourceHelper.js.map +1 -1
  26. package/dist/src/layer/cesium/singleImageCesiumImpl.js.map +1 -1
  27. package/dist/src/layer/cesium/terrainCesiumImpl.js.map +1 -1
  28. package/dist/src/layer/cesium/tmsCesiumImpl.js.map +1 -1
  29. package/dist/src/layer/cesium/vectorCesiumImpl.js +2 -2
  30. package/dist/src/layer/cesium/vectorCesiumImpl.js.map +1 -1
  31. package/dist/src/layer/cesium/vectorContext.js +79 -14
  32. package/dist/src/layer/cesium/vectorContext.js.map +1 -1
  33. package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js.map +1 -1
  34. package/dist/src/layer/cesium/vectorTileImageryProvider.js.map +1 -1
  35. package/dist/src/layer/cesium/wmsCesiumImpl.js.map +1 -1
  36. package/dist/src/layer/cesiumTilesetLayer.js.map +1 -1
  37. package/dist/src/layer/czmlLayer.js.map +1 -1
  38. package/dist/src/layer/dataSourceLayer.js.map +1 -1
  39. package/dist/src/layer/featureLayer.js.map +1 -1
  40. package/dist/src/layer/featureStoreFeatureVisibility.js.map +1 -1
  41. package/dist/src/layer/featureStoreLayer.js.map +1 -1
  42. package/dist/src/layer/featureStoreLayerChanges.js.map +1 -1
  43. package/dist/src/layer/featureVisibility.js +1 -1
  44. package/dist/src/layer/featureVisibility.js.map +1 -1
  45. package/dist/src/layer/geojsonHelpers.js.map +1 -1
  46. package/dist/src/layer/geojsonLayer.js.map +1 -1
  47. package/dist/src/layer/globalHider.js.map +1 -1
  48. package/dist/src/layer/layer.js.map +1 -1
  49. package/dist/src/layer/layerImplementation.js.map +1 -1
  50. package/dist/src/layer/oblique/layerObliqueImpl.js.map +1 -1
  51. package/dist/src/layer/oblique/obliqueHelpers.js.map +1 -1
  52. package/dist/src/layer/oblique/vectorObliqueImpl.js.map +1 -1
  53. package/dist/src/layer/openStreetMapLayer.js.map +1 -1
  54. package/dist/src/layer/openlayers/layerOpenlayersImpl.js.map +1 -1
  55. package/dist/src/layer/openlayers/rasterLayerOpenlayersImpl.js.map +1 -1
  56. package/dist/src/layer/openlayers/singleImageOpenlayersImpl.js.map +1 -1
  57. package/dist/src/layer/openlayers/tmsOpenlayersImpl.js.map +1 -1
  58. package/dist/src/layer/openlayers/vectorOpenlayersImpl.js.map +1 -1
  59. package/dist/src/layer/openlayers/vectorTileOpenlayersImpl.js.map +1 -1
  60. package/dist/src/layer/openlayers/wmsOpenlayersImpl.js.map +1 -1
  61. package/dist/src/layer/openlayers/wmtsOpenlayersImpl.js.map +1 -1
  62. package/dist/src/layer/pointCloudLayer.js.map +1 -1
  63. package/dist/src/layer/rasterLayer.js +1 -1
  64. package/dist/src/layer/rasterLayer.js.map +1 -1
  65. package/dist/src/layer/singleImageLayer.js.map +1 -1
  66. package/dist/src/layer/terrainHelpers.js.map +1 -1
  67. package/dist/src/layer/terrainLayer.js.map +1 -1
  68. package/dist/src/layer/tileLoadedHelper.js.map +1 -1
  69. package/dist/src/layer/tileProvider/mvtTileProvider.js.map +1 -1
  70. package/dist/src/layer/tileProvider/staticGeojsonTileProvider.js.map +1 -1
  71. package/dist/src/layer/tileProvider/tileProvider.js.map +1 -1
  72. package/dist/src/layer/tileProvider/urlTemplateTileProvider.js.map +1 -1
  73. package/dist/src/layer/tmsLayer.js.map +1 -1
  74. package/dist/src/layer/vectorHelpers.js.map +1 -1
  75. package/dist/src/layer/vectorLayer.js +1 -3
  76. package/dist/src/layer/vectorLayer.js.map +1 -1
  77. package/dist/src/layer/vectorProperties.js +23 -1
  78. package/dist/src/layer/vectorProperties.js.map +1 -1
  79. package/dist/src/layer/vectorTileLayer.js.map +1 -1
  80. package/dist/src/layer/wfsLayer.js.map +1 -1
  81. package/dist/src/layer/wmsHelpers.js.map +1 -1
  82. package/dist/src/layer/wmsLayer.js.map +1 -1
  83. package/dist/src/layer/wmtsLayer.js.map +1 -1
  84. package/dist/src/map/baseOLMap.js.map +1 -1
  85. package/dist/src/map/cameraLimiter.js +1 -1
  86. package/dist/src/map/cameraLimiter.js.map +1 -1
  87. package/dist/src/map/cesiumMap.js.map +1 -1
  88. package/dist/src/map/obliqueMap.js.map +1 -1
  89. package/dist/src/map/openlayersMap.js +1 -1
  90. package/dist/src/map/openlayersMap.js.map +1 -1
  91. package/dist/src/map/vcsMap.js.map +1 -1
  92. package/dist/src/oblique/helpers.js.map +1 -1
  93. package/dist/src/oblique/obliqueCollection.js.map +1 -1
  94. package/dist/src/oblique/obliqueDataSet.js +1 -1
  95. package/dist/src/oblique/obliqueDataSet.js.map +1 -1
  96. package/dist/src/oblique/obliqueImage.js.map +1 -1
  97. package/dist/src/oblique/obliqueImageMeta.js.map +1 -1
  98. package/dist/src/oblique/obliqueProvider.js.map +1 -1
  99. package/dist/src/oblique/obliqueView.js.map +1 -1
  100. package/dist/src/oblique/obliqueViewDirection.js +1 -1
  101. package/dist/src/oblique/obliqueViewDirection.js.map +1 -1
  102. package/dist/src/oblique/parseImageJson.js.map +1 -1
  103. package/dist/src/ol/feature.js.map +1 -1
  104. package/dist/src/ol/geom/geometryCollection.js +68 -11
  105. package/dist/src/ol/geom/geometryCollection.js.map +1 -1
  106. package/dist/src/ol/render/canvas/canvasTileRenderer.js.map +1 -1
  107. package/dist/src/ol/source/ClusterEnhancedVectorSource.js.map +1 -1
  108. package/dist/src/ol/source/VcsCluster.js.map +1 -1
  109. package/dist/src/overrideClassRegistry.js.map +1 -1
  110. package/dist/src/style/arcStyle.js.map +1 -1
  111. package/dist/src/style/arrowStyle.js +1 -1
  112. package/dist/src/style/arrowStyle.js.map +1 -1
  113. package/dist/src/style/declarativeStyleItem.js.map +1 -1
  114. package/dist/src/style/shapesCategory.js.map +1 -1
  115. package/dist/src/style/styleFactory.js.map +1 -1
  116. package/dist/src/style/styleHelpers.js +1 -1
  117. package/dist/src/style/styleHelpers.js.map +1 -1
  118. package/dist/src/style/styleItem.js.map +1 -1
  119. package/dist/src/style/vectorStyleItem.js +1 -1
  120. package/dist/src/style/vectorStyleItem.js.map +1 -1
  121. package/dist/src/style/writeStyle.js.map +1 -1
  122. package/dist/src/util/clipping/clippingObject.js.map +1 -1
  123. package/dist/src/util/clipping/clippingObjectManager.js.map +1 -1
  124. package/dist/src/util/clipping/clippingPlaneHelper.js.map +1 -1
  125. package/dist/src/util/collection.js.map +1 -1
  126. package/dist/src/util/displayQuality/displayQuality.js +1 -1
  127. package/dist/src/util/displayQuality/displayQuality.js.map +1 -1
  128. package/dist/src/util/editor/createFeatureSession.js.map +1 -1
  129. package/dist/src/util/editor/editFeaturesSession.js.map +1 -1
  130. package/dist/src/util/editor/editGeometrySession.js.map +1 -1
  131. package/dist/src/util/editor/editorHelpers.js.map +1 -1
  132. package/dist/src/util/editor/editorSessionHelpers.js +2 -2
  133. package/dist/src/util/editor/editorSessionHelpers.js.map +1 -1
  134. package/dist/src/util/editor/interactions/createBBoxInteraction.js.map +1 -1
  135. package/dist/src/util/editor/interactions/createCircleInteraction.js.map +1 -1
  136. package/dist/src/util/editor/interactions/createLineStringInteraction.js.map +1 -1
  137. package/dist/src/util/editor/interactions/createPointInteraction.js.map +1 -1
  138. package/dist/src/util/editor/interactions/createPolygonInteraction.js.map +1 -1
  139. package/dist/src/util/editor/interactions/creationSnapping.js.map +1 -1
  140. package/dist/src/util/editor/interactions/editFeaturesMouseOverInteraction.js.map +1 -1
  141. package/dist/src/util/editor/interactions/editGeometryMouseOverInteraction.js +5 -5
  142. package/dist/src/util/editor/interactions/editGeometryMouseOverInteraction.js.map +1 -1
  143. package/dist/src/util/editor/interactions/ensureHandlerSelectionInteraction.js.map +1 -1
  144. package/dist/src/util/editor/interactions/insertVertexInteraction.js.map +1 -1
  145. package/dist/src/util/editor/interactions/layerSnapping.js.map +1 -1
  146. package/dist/src/util/editor/interactions/mapInteractionController.js.map +1 -1
  147. package/dist/src/util/editor/interactions/removeVertexInteraction.js.map +1 -1
  148. package/dist/src/util/editor/interactions/selectFeatureMouseOverInteraction.js +1 -1
  149. package/dist/src/util/editor/interactions/selectFeatureMouseOverInteraction.js.map +1 -1
  150. package/dist/src/util/editor/interactions/selectMultiFeatureInteraction.d.ts +1 -1
  151. package/dist/src/util/editor/interactions/selectMultiFeatureInteraction.js.map +1 -1
  152. package/dist/src/util/editor/interactions/selectSingleFeatureInteraction.d.ts +1 -1
  153. package/dist/src/util/editor/interactions/selectSingleFeatureInteraction.js.map +1 -1
  154. package/dist/src/util/editor/interactions/translateVertexInteraction.js.map +1 -1
  155. package/dist/src/util/editor/interactions/translationSnapping.js.map +1 -1
  156. package/dist/src/util/editor/selectFeaturesSession.js.map +1 -1
  157. package/dist/src/util/editor/snappingHelpers.js.map +1 -1
  158. package/dist/src/util/editor/transformation/create2DHandlers.js.map +1 -1
  159. package/dist/src/util/editor/transformation/create3DHandlers.js.map +1 -1
  160. package/dist/src/util/editor/transformation/extrudeInteraction.js.map +1 -1
  161. package/dist/src/util/editor/transformation/rotateInteraction.js.map +1 -1
  162. package/dist/src/util/editor/transformation/scaleInteraction.js.map +1 -1
  163. package/dist/src/util/editor/transformation/transformationHandler.js.map +1 -1
  164. package/dist/src/util/editor/transformation/transformationTypes.js +2 -2
  165. package/dist/src/util/editor/transformation/transformationTypes.js.map +1 -1
  166. package/dist/src/util/editor/transformation/translateInteraction.js.map +1 -1
  167. package/dist/src/util/editor/validateGeoemetry.js.map +1 -1
  168. package/dist/src/util/exclusiveManager.js.map +1 -1
  169. package/dist/src/util/extent.js.map +1 -1
  170. package/dist/src/util/featureconverter/circleToCesium.js.map +1 -1
  171. package/dist/src/util/featureconverter/clampedPrimitive.js.map +1 -1
  172. package/dist/src/util/featureconverter/convert.js.map +1 -1
  173. package/dist/src/util/featureconverter/extent3D.js.map +1 -1
  174. package/dist/src/util/featureconverter/lineStringToCesium.js.map +1 -1
  175. package/dist/src/util/featureconverter/pointHelpers.js.map +1 -1
  176. package/dist/src/util/featureconverter/pointToCesium.js.map +1 -1
  177. package/dist/src/util/featureconverter/polygonToCesium.js.map +1 -1
  178. package/dist/src/util/featureconverter/storeyHelpers.js.map +1 -1
  179. package/dist/src/util/featureconverter/vectorGeometryFactory.js.map +1 -1
  180. package/dist/src/util/featureconverter/vectorHeightInfo.js +2 -4
  181. package/dist/src/util/featureconverter/vectorHeightInfo.js.map +1 -1
  182. package/dist/src/util/fetch.js.map +1 -1
  183. package/dist/src/util/flight/flightAnchor.js.map +1 -1
  184. package/dist/src/util/flight/flightCollection.js.map +1 -1
  185. package/dist/src/util/flight/flightHelpers.js.map +1 -1
  186. package/dist/src/util/flight/flightInstance.js.map +1 -1
  187. package/dist/src/util/flight/flightPlayer.js.map +1 -1
  188. package/dist/src/util/flight/flightVisualizer.js.map +1 -1
  189. package/dist/src/util/geometryHelpers.d.ts +1 -1
  190. package/dist/src/util/geometryHelpers.js +79 -56
  191. package/dist/src/util/geometryHelpers.js.map +1 -1
  192. package/dist/src/util/indexedCollection.js.map +1 -1
  193. package/dist/src/util/layerCollection.js.map +1 -1
  194. package/dist/src/util/locale.js.map +1 -1
  195. package/dist/src/util/mapCollection.js.map +1 -1
  196. package/dist/src/util/math.js.map +1 -1
  197. package/dist/src/util/overrideCollection.js.map +1 -1
  198. package/dist/src/util/projection.js.map +1 -1
  199. package/dist/src/util/urlHelpers.js.map +1 -1
  200. package/dist/src/util/viewpoint.js.map +1 -1
  201. package/dist/src/vcsApp.d.ts +3 -3
  202. package/dist/src/vcsApp.js +1 -0
  203. package/dist/src/vcsApp.js.map +1 -1
  204. package/dist/src/vcsEvent.js.map +1 -1
  205. package/dist/src/vcsModule.js.map +1 -1
  206. package/dist/src/vcsModuleHelpers.js.map +1 -1
  207. package/dist/src/vcsObject.js.map +1 -1
  208. package/dist/tests/unit/helpers/cesiumHelpers.d.ts +9 -9
  209. package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
  210. package/dist/tests/unit/helpers/importJSON.js.map +1 -1
  211. package/dist/tests/unit/helpers/obliqueHelpers.js.map +1 -1
  212. package/index.ts +1 -1
  213. package/package.json +5 -5
  214. package/src/category/category.ts +3 -2
  215. package/src/category/categoryCollection.ts +1 -1
  216. package/src/classRegistry.ts +1 -1
  217. package/src/global.d.ts +6 -1
  218. package/src/layer/cesium/clusterContext.ts +1 -1
  219. package/src/layer/cesium/vectorCesiumImpl.ts +2 -2
  220. package/src/layer/cesium/vectorContext.ts +124 -18
  221. package/src/layer/tileLoadedHelper.ts +1 -3
  222. package/src/layer/vectorLayer.ts +1 -3
  223. package/src/layer/vectorProperties.ts +27 -2
  224. package/src/ol/geom/geometryCollection.js +82 -13
  225. package/src/util/clipping/clippingObject.ts +1 -3
  226. package/src/util/featureconverter/pointHelpers.ts +4 -4
  227. package/src/util/featureconverter/vectorHeightInfo.ts +2 -3
  228. package/src/util/geometryHelpers.ts +111 -90
  229. package/src/vcsApp.ts +11 -4
@@ -272,104 +272,125 @@ export async function from2Dto3DLayout(
272
272
  }
273
273
  }
274
274
 
275
- export async function createAbsoluteFeatures(
276
- features: Feature[],
275
+ function setZCoordinate(geometry: Geometry, z: number): void {
276
+ const layout = geometry.getLayout();
277
+ const coordinates = geometry.getCoordinates() as any[];
278
+ const flatCoordinates = getFlatCoordinateReferences(geometry, coordinates);
279
+
280
+ flatCoordinates.forEach((c) => {
281
+ if (layout === 'XYM') {
282
+ c[3] = c[2];
283
+ c[2] = z;
284
+ } else {
285
+ c[2] = z;
286
+ }
287
+ });
288
+
289
+ geometry.setCoordinates(
290
+ coordinates,
291
+ layout === 'XYM' || layout === 'XYZM' ? 'XYZM' : 'XYZ',
292
+ );
293
+ }
294
+
295
+ export async function createAbsoluteFeature(
296
+ feature: Feature,
277
297
  vectorProperties: VectorProperties,
278
298
  scene: Scene,
279
- ): Promise<Feature[]> {
280
- const clones = features.map((feature) => feature.clone());
281
- const absoluteClones = await Promise.all(
282
- clones.map(async (feature) => {
283
- const geometry = feature.getGeometry();
284
- if (!geometry) {
285
- return null;
286
- }
299
+ ): Promise<Feature | null> {
300
+ const clone = feature.clone();
301
+ const geometry = clone.getGeometry();
302
+ if (!geometry) {
303
+ return null;
304
+ }
287
305
 
288
- const altitudeMode = vectorProperties.getAltitudeMode(feature);
289
- if (altitudeMode === HeightReference.NONE) {
290
- if (is2DLayout(geometry.getLayout())) {
291
- await from2Dto3DLayout(
292
- geometry,
293
- scene,
294
- HeightReference.CLAMP_TO_GROUND,
295
- );
296
- }
297
- } else if (isClampedHeightReference(altitudeMode)) {
298
- await placeGeometryOnGround(
299
- geometry,
300
- scene,
301
- altitudeMode !== HeightReference.CLAMP_TO_TERRAIN
302
- ? HeightReference.CLAMP_TO_GROUND
303
- : HeightReference.CLAMP_TO_TERRAIN,
304
- );
305
- } else if (isRelativeHeightReference(altitudeMode)) {
306
- const singleGeometries = getSingleGeometriesFromGeometry(geometry);
307
- await Promise.all(
308
- singleGeometries.map(async (singleGeometry) => {
309
- const heightInfo = getHeightInfo(
310
- feature,
311
- singleGeometry,
312
- vectorProperties,
313
- ) as VectorHeightInfo<RelativeHeightReference>;
306
+ const altitudeMode = vectorProperties.getAltitudeMode(clone);
307
+ let groundLevel = vectorProperties.getGroundLevel(clone);
314
308
 
315
- let { groundLevel } = heightInfo;
316
- if (heightInfo.clampOrigin) {
317
- const cartographics = [
318
- mercatorToCartographic(heightInfo.clampOrigin),
319
- ];
320
- if (
321
- heightInfo.heightReference ===
322
- HeightReference.RELATIVE_TO_TERRAIN
323
- ) {
324
- await sampleTerrainMostDetailed(
325
- scene.terrainProvider,
326
- cartographics,
327
- );
328
- } else {
329
- await scene.sampleHeightMostDetailed(cartographics);
330
- }
331
- groundLevel = cartographics[0].height;
332
- }
309
+ if (altitudeMode === HeightReference.NONE) {
310
+ if (groundLevel != null) {
311
+ setZCoordinate(geometry, groundLevel);
312
+ } else if (is2DLayout(geometry.getLayout())) {
313
+ await from2Dto3DLayout(geometry, scene, HeightReference.CLAMP_TO_GROUND);
314
+ }
315
+ } else if (isClampedHeightReference(altitudeMode)) {
316
+ if (groundLevel != null) {
317
+ setZCoordinate(geometry, groundLevel);
318
+ } else {
319
+ await placeGeometryOnGround(
320
+ geometry,
321
+ scene,
322
+ altitudeMode !== HeightReference.CLAMP_TO_TERRAIN
323
+ ? HeightReference.CLAMP_TO_GROUND
324
+ : HeightReference.CLAMP_TO_TERRAIN,
325
+ );
326
+ }
327
+ } else if (isRelativeHeightReference(altitudeMode)) {
328
+ const singleGeometries = getSingleGeometriesFromGeometry(geometry);
329
+ await Promise.all(
330
+ singleGeometries.map(async (singleGeometry) => {
331
+ const heightInfo = getHeightInfo(
332
+ clone,
333
+ singleGeometry,
334
+ vectorProperties,
335
+ ) as VectorHeightInfo<RelativeHeightReference>;
333
336
 
334
- const coordinates = singleGeometry.getCoordinates() as any[];
335
- const flatCoordinates = getFlatCoordinateReferences(
336
- singleGeometry,
337
- coordinates,
337
+ ({ groundLevel } = heightInfo);
338
+ if (heightInfo.clampOrigin) {
339
+ const cartographics = [
340
+ mercatorToCartographic(heightInfo.clampOrigin),
341
+ ];
342
+ if (
343
+ heightInfo.heightReference === HeightReference.RELATIVE_TO_TERRAIN
344
+ ) {
345
+ await sampleTerrainMostDetailed(
346
+ scene.terrainProvider,
347
+ cartographics,
338
348
  );
339
- const { heightAboveGround } = heightInfo;
340
- const setCoordinate =
341
- heightAboveGround == null
342
- ? (c: Coordinate): void => {
343
- c[2] += groundLevel as number;
344
- }
345
- : (c: Coordinate): void => {
346
- c[2] = (groundLevel as number) + heightAboveGround;
347
- };
348
- flatCoordinates.forEach(setCoordinate);
349
- singleGeometry.setCoordinates(coordinates, 'XYZ');
350
- }),
349
+ } else {
350
+ await scene.sampleHeightMostDetailed(cartographics);
351
+ }
352
+ groundLevel = cartographics[0].height;
353
+ }
354
+
355
+ const coordinates = singleGeometry.getCoordinates() as any[];
356
+ const flatCoordinates = getFlatCoordinateReferences(
357
+ singleGeometry,
358
+ coordinates,
351
359
  );
360
+ const { heightAboveGround } = heightInfo;
361
+ const setCoordinate =
362
+ heightAboveGround == null
363
+ ? (c: Coordinate): void => {
364
+ c[2] += groundLevel as number;
365
+ }
366
+ : (c: Coordinate): void => {
367
+ c[2] = (groundLevel as number) + heightAboveGround;
368
+ };
369
+ flatCoordinates.forEach(setCoordinate);
370
+ singleGeometry.setCoordinates(coordinates, 'XYZ');
371
+ }),
372
+ );
352
373
 
353
- if (geometry instanceof MultiPoint) {
354
- geometry.setCoordinates(
355
- singleGeometries.map((g) => g.getCoordinates() as Coordinate),
356
- );
357
- } else if (geometry instanceof MultiPolygon) {
358
- geometry.setCoordinates(
359
- singleGeometries.map((g) => g.getCoordinates() as Coordinate[][]),
360
- );
361
- } else if (geometry instanceof MultiLineString) {
362
- geometry.setCoordinates(
363
- singleGeometries.map((g) => g.getCoordinates() as Coordinate[]),
364
- );
365
- } else if (geometry instanceof GeometryCollection) {
366
- geometry.setGeometries(singleGeometries);
367
- }
368
- }
374
+ if (geometry instanceof MultiPoint) {
375
+ geometry.setCoordinates(
376
+ singleGeometries.map((g) => g.getCoordinates() as Coordinate),
377
+ );
378
+ } else if (geometry instanceof MultiPolygon) {
379
+ geometry.setCoordinates(
380
+ singleGeometries.map((g) => g.getCoordinates() as Coordinate[][]),
381
+ );
382
+ } else if (geometry instanceof MultiLineString) {
383
+ geometry.setCoordinates(
384
+ singleGeometries.map((g) => g.getCoordinates() as Coordinate[]),
385
+ );
386
+ } else if (geometry instanceof GeometryCollection) {
387
+ geometry.setGeometries(singleGeometries);
388
+ }
389
+ }
369
390
 
370
- return feature;
371
- }),
372
- );
391
+ clone.set('olcs_altitudeMode', 'absolute');
392
+ clone.unset('olcs_groundLevel');
393
+ clone.unset('olcs_heightAboveGround');
373
394
 
374
- return absoluteClones.filter((f): f is Feature => !!f);
395
+ return clone;
375
396
  }
package/src/vcsApp.ts CHANGED
@@ -27,6 +27,7 @@ import { setDefaultProjectionOptions } from './util/projection.js';
27
27
  import ObliqueMap from './map/obliqueMap.js';
28
28
  import OverrideClassRegistry from './overrideClassRegistry.js';
29
29
  import ClassRegistry, {
30
+ AbstractCtor,
30
31
  categoryClassRegistry,
31
32
  Ctor,
32
33
  featureProviderClassRegistry,
@@ -117,7 +118,9 @@ class VcsApp {
117
118
 
118
119
  private _flights: OverrideCollection<FlightInstance, FlightCollection>;
119
120
 
120
- private _categoryClassRegistry: OverrideClassRegistry<typeof Category>;
121
+ private _categoryClassRegistry: OverrideClassRegistry<
122
+ typeof Category<any, any>
123
+ >;
121
124
 
122
125
  private _categories: CategoryCollection;
123
126
 
@@ -347,11 +350,13 @@ class VcsApp {
347
350
  return this._styleClassRegistry;
348
351
  }
349
352
 
350
- get categoryClassRegistry(): OverrideClassRegistry<typeof Category> {
353
+ get categoryClassRegistry(): OverrideClassRegistry<
354
+ typeof Category<any, any>
355
+ > {
351
356
  return this._categoryClassRegistry;
352
357
  }
353
358
 
354
- get categoryItemClassRegistry(): OverrideClassRegistry<Ctor<any>> {
359
+ get categoryItemClassRegistry(): OverrideClassRegistry<AbstractCtor> {
355
360
  return this._categoryItemClassRegistry;
356
361
  }
357
362
 
@@ -422,7 +427,7 @@ class VcsApp {
422
427
  [...this._maps]
423
428
  .filter((m) => m instanceof ObliqueMap)
424
429
  .map((m) => {
425
- return (m as ObliqueMap).setCollection(startingObliqueCollection);
430
+ return m.setCollection(startingObliqueCollection);
426
431
  }),
427
432
  );
428
433
  }
@@ -623,5 +628,7 @@ export function getVcsAppById(id: string): VcsApp | undefined {
623
628
 
624
629
  window.vcs = window.vcs || {};
625
630
  window.vcs.apps = vcsApps;
631
+ window.vcs.createModuleFromConfig = (config: VcsModuleConfig): VcsModule =>
632
+ new VcsModule(config);
626
633
 
627
634
  export default VcsApp;