@vcmap/core 5.0.0-rc.22 → 5.0.0-rc.24

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 (59) hide show
  1. package/index.d.ts +631 -98
  2. package/index.js +24 -9
  3. package/package.json +2 -2
  4. package/src/category/category.js +1 -1
  5. package/src/featureProvider/abstractFeatureProvider.js +1 -18
  6. package/src/featureProvider/wmsFeatureProvider.js +1 -1
  7. package/src/interaction/eventHandler.js +14 -0
  8. package/src/layer/cesium/clusterContext.js +12 -0
  9. package/src/layer/cesium/vectorCesiumImpl.js +2 -2
  10. package/src/layer/cesium/vectorContext.js +115 -7
  11. package/src/layer/cesiumTilesetLayer.js +0 -14
  12. package/src/layer/czmlLayer.js +1 -1
  13. package/src/layer/dataSourceLayer.js +1 -53
  14. package/src/layer/featureLayer.js +0 -44
  15. package/src/layer/featureStoreLayer.js +0 -15
  16. package/src/layer/layer.js +0 -11
  17. package/src/layer/vectorHelpers.js +0 -85
  18. package/src/layer/vectorLayer.js +0 -9
  19. package/src/layer/vectorProperties.js +150 -8
  20. package/src/layer/vectorTileLayer.js +0 -9
  21. package/src/layer/wmsHelpers.js +2 -0
  22. package/src/map/baseOLMap.js +12 -6
  23. package/src/map/cesiumMap.js +48 -38
  24. package/src/map/openlayersMap.js +6 -5
  25. package/src/map/vcsMap.js +22 -0
  26. package/src/style/arcStyle.js +316 -0
  27. package/src/style/arrowStyle.js +269 -0
  28. package/src/util/editor/createFeatureSession.js +3 -1
  29. package/src/util/editor/editFeaturesSession.js +315 -0
  30. package/src/util/editor/editGeometrySession.js +5 -1
  31. package/src/util/editor/editorHelpers.js +118 -14
  32. package/src/util/editor/editorSessionHelpers.js +12 -0
  33. package/src/util/editor/editorSymbols.js +6 -0
  34. package/src/util/editor/interactions/editFeaturesMouseOverInteraction.js +120 -0
  35. package/src/util/editor/interactions/editGeometryMouseOverInteraction.js +1 -3
  36. package/src/util/editor/interactions/ensureHandlerSelectionInteraction.js +48 -0
  37. package/src/util/editor/interactions/mapInteractionController.js +5 -2
  38. package/src/util/editor/interactions/selectMultiFeatureInteraction.js +146 -0
  39. package/src/util/editor/interactions/translateVertexInteraction.js +2 -2
  40. package/src/util/editor/transformation/create2DHandlers.js +294 -0
  41. package/src/util/editor/transformation/create3DHandlers.js +575 -0
  42. package/src/util/editor/transformation/extrudeInteraction.js +91 -0
  43. package/src/util/editor/transformation/rotateInteraction.js +188 -0
  44. package/src/util/editor/transformation/scaleInteraction.js +185 -0
  45. package/src/util/editor/transformation/transformationHandler.js +168 -0
  46. package/src/util/editor/transformation/transformationTypes.js +83 -0
  47. package/src/util/editor/transformation/translateInteraction.js +209 -0
  48. package/src/util/featureconverter/arcToCesium.js +87 -0
  49. package/src/util/featureconverter/convert.js +7 -1
  50. package/src/util/featureconverter/extent3D.js +64 -1
  51. package/src/util/featureconverter/lineStringToCesium.js +103 -2
  52. package/src/util/featureconverter/pointHelpers.js +341 -0
  53. package/src/util/featureconverter/pointToCesium.js +27 -76
  54. package/src/util/geometryHelpers.js +11 -8
  55. package/src/util/mapCollection.js +25 -0
  56. package/src/util/math.js +99 -2
  57. package/tests/unit/helpers/cesiumHelpers.js +17 -5
  58. package/tests/unit/helpers/helpers.js +13 -0
  59. package/src/featureProvider/featureProviderHelpers.js +0 -50
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import olFeature from 'ol/Feature';
2
2
  import Geometry from 'ol/geom/Geometry';
3
+ import Style from 'ol/style/Style';
3
4
 
4
5
  export interface AppBackedCategoryOptions extends CategoryOptions {
5
6
  collectionName: string;
@@ -74,7 +75,7 @@ export class Category<T extends Object|VcsObject> extends VcsObject {
74
75
  * @returns // XXX should this still be async?
75
76
  */
76
77
  protected _deserializeItem(config: any): Promise<T>;
77
- protected _serializeItem(item: T): object[];
78
+ protected _serializeItem(item: T): any;
78
79
  serializeForContext(contextId: string): any | null;
79
80
  /**
80
81
  * unique Name
@@ -190,10 +191,6 @@ export interface AbstractFeatureProviderOptions extends VcsObjectOptions {
190
191
  * the style to apply to features created by this feature provider
191
192
  */
192
193
  style?: StyleItemOptions | StyleItem | undefined;
193
- /**
194
- * generic properties to add to features created by this feature provider
195
- */
196
- genericFeatureProperties?: any | undefined;
197
194
  /**
198
195
  * the vector properties of the features. Allow picking is false by default.
199
196
  */
@@ -231,12 +228,6 @@ export class AbstractFeatureProvider {
231
228
  * The vector properties assigned to features created by this provider
232
229
  */
233
230
  vectorProperties: VectorProperties;
234
- /**
235
- * An object of potential generic feature properties to add to all feature created by this provider
236
- */
237
- genericFeatureProperties: {
238
- [key: string]: any;
239
- } | undefined;
240
231
  /**
241
232
  * Map ClassNames Can be used to only apply this featureProvider to the specified maps
242
233
  */
@@ -246,7 +237,7 @@ export class AbstractFeatureProvider {
246
237
  */
247
238
  isSupported(map: VcsMap): boolean;
248
239
  /**
249
- * Ensures the feature has an ID, applies all vectorProperties and adds the generic properties, style and the vcsLayerName
240
+ * Ensures the feature has an ID, applies all vectorProperties and adds style and the vcsLayerName
250
241
  * and isProvidedFeature symbols to the feature
251
242
  */
252
243
  getProviderFeature(feature: import("ol").Feature<import("ol/geom/Geometry").default>): import("ol").Feature<import("ol/geom/Geometry").default>;
@@ -268,8 +259,6 @@ export class AbstractFeatureProvider {
268
259
  destroy(): void;
269
260
  }
270
261
 
271
- export function getGenericFeatureFromProvidedFeature(feature: VectorClickedObject, layer: Layer): GenericFeature;
272
-
273
262
  /**
274
263
  * Added to ol.Feature, if they are not part of a layer, but provided by an {@link AbstractFeatureProvider}.
275
264
  */
@@ -310,12 +299,6 @@ export class TileProviderFeatureProvider extends AbstractFeatureProvider {
310
299
  * The vector properties assigned to features created by this provider
311
300
  */
312
301
  vectorProperties: VectorProperties;
313
- /**
314
- * An object of potential generic feature properties to add to all feature created by this provider
315
- */
316
- genericFeatureProperties: {
317
- [key: string]: any;
318
- } | undefined;
319
302
  }
320
303
 
321
304
  /**
@@ -388,12 +371,6 @@ export class WMSFeatureProvider extends AbstractFeatureProvider {
388
371
  * The vector properties assigned to features created by this provider
389
372
  */
390
373
  vectorProperties: VectorProperties;
391
- /**
392
- * An object of potential generic feature properties to add to all feature created by this provider
393
- */
394
- genericFeatureProperties: {
395
- [key: string]: any;
396
- } | undefined;
397
374
  /**
398
375
  * Map ClassNames Can be used to only apply this featureProvider to the specified maps
399
376
  */
@@ -575,6 +552,10 @@ export class EventHandler {
575
552
  * A copy of all the EventHandler interactions
576
553
  */
577
554
  readonly interactions: AbstractInteraction[];
555
+ /**
556
+ * An event called, when the modifier changes. Order of precedence, if more then one key is pressed: SHIFT, ALT, CTRL
557
+ */
558
+ readonly modifierChanged: VcsEvent<ModificationKeyType>;
578
559
  /**
579
560
  * Add a dynamic interaction to the interaction chain. This is the default methodology for
580
561
  * user map interactions, such as drawing or measuring. If another exclusive interaction is added,
@@ -786,6 +767,7 @@ export class ClusterContext {
786
767
  featureToBillboardMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, import("@vcmap/cesium").Entity[]>;
787
768
  featureToLabelMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, import("@vcmap/cesium").Entity[]>;
788
769
  addPrimitives(primitives: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
770
+ addScaledPrimitives(primitives: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
789
771
  addBillboards(billboardOptions: object[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
790
772
  addLabels(labelOptions: object[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
791
773
  removeFeature(feature: import("ol").Feature<import("ol/geom/Geometry").default>): void;
@@ -910,6 +892,7 @@ export class VectorCesiumImpl extends LayerImplementation<CesiumMap> implements
910
892
 
911
893
  export interface VectorContextFeatureCache {
912
894
  primitives?: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[] | undefined;
895
+ scaledPrimitives?: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[] | undefined;
913
896
  billboards?: (import("@vcmap/cesium").Billboard | import("@vcmap/cesium").Entity)[] | undefined;
914
897
  labels?: (import("@vcmap/cesium").Label | import("@vcmap/cesium").Entity)[] | undefined;
915
898
  }
@@ -918,19 +901,31 @@ export function setReferenceForPicking(feature: import("ol").Feature<import("ol/
918
901
 
919
902
  export function removeArrayFromCollection(collection: import("@vcmap/cesium").PrimitiveCollection | import("@vcmap/cesium").BillboardCollection | import("@vcmap/cesium").LabelCollection | import("@vcmap/cesium").EntityCollection, array?: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Billboard | import("@vcmap/cesium").Label | import("@vcmap/cesium").Entity | import("@vcmap/cesium").Model)[]): void;
920
903
 
921
- export function removeFeatureFromMap(feature: import("ol").Feature<import("ol/geom/Geometry").default>, featuresMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Billboard | import("@vcmap/cesium").Label | import("@vcmap/cesium").Entity | import("@vcmap/cesium").Model)[]>, primitiveCollection: import("@vcmap/cesium").PrimitiveCollection | import("@vcmap/cesium").BillboardCollection | import("@vcmap/cesium").LabelCollection | import("@vcmap/cesium").EntityCollection): void;
904
+ /**
905
+ * @returns - if a feature was removed from the map
906
+ */
907
+ export function removeFeatureFromMap(feature: import("ol").Feature<import("ol/geom/Geometry").default>, featuresMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Billboard | import("@vcmap/cesium").Label | import("@vcmap/cesium").Entity | import("@vcmap/cesium").Model)[]>, primitiveCollection: import("@vcmap/cesium").PrimitiveCollection | import("@vcmap/cesium").BillboardCollection | import("@vcmap/cesium").LabelCollection | import("@vcmap/cesium").EntityCollection): boolean;
922
908
 
923
909
  export function addPrimitiveToContext(primitives: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Entity.ConstructorOptions | import("@vcmap/cesium").Model | object)[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking: boolean, primitiveCollection: import("@vcmap/cesium").BillboardCollection | import("@vcmap/cesium").LabelCollection | import("@vcmap/cesium").PrimitiveCollection | import("@vcmap/cesium").EntityCollection, featureMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, (import("@vcmap/cesium").Billboard | import("@vcmap/cesium").Label | import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Entity | import("@vcmap/cesium").Model)[]>): void;
924
910
 
911
+ /**
912
+ * Creates a self scaling primitive collection. It will scale a primitive of model in the collection
913
+ * in such a fashion, that the cartesian unit of 1 equals 1 pixel.
914
+ */
915
+ export function setupScalingPrimitiveCollection(map: CesiumMap, primitiveCollection: import("@vcmap/cesium").PrimitiveCollection, dirtyRef: any): (...params: any[]) => any;
916
+
925
917
  export class VectorContext {
926
- constructor(scene: import("@vcmap/cesium").Scene, rootCollection: import("@vcmap/cesium").PrimitiveCollection);
918
+ constructor(map: CesiumMap, rootCollection: import("@vcmap/cesium").PrimitiveCollection);
927
919
  primitives: import("@vcmap/cesium").PrimitiveCollection;
920
+ scaledPrimitives: import("@vcmap/cesium").PrimitiveCollection;
928
921
  billboards: import("@vcmap/cesium").BillboardCollection;
929
922
  labels: import("@vcmap/cesium").LabelCollection;
930
923
  featureToPrimitiveMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[]>;
924
+ featureToScaledPrimitiveMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[]>;
931
925
  featureToBillboardMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, import("@vcmap/cesium").Billboard[]>;
932
926
  featureToLabelMap: Map<import("ol").Feature<import("ol/geom/Geometry").default>, import("@vcmap/cesium").Label[]>;
933
927
  addPrimitives(primitives: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
928
+ addScaledPrimitives(primitives: (import("@vcmap/cesium").Primitive | import("@vcmap/cesium").GroundPrimitive | import("@vcmap/cesium").GroundPolylinePrimitive | import("@vcmap/cesium").ClassificationPrimitive | import("@vcmap/cesium").Model)[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
934
929
  addBillboards(billboardOptions: object[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
935
930
  addLabels(labelOptions: object[], feature: import("ol").Feature<import("ol/geom/Geometry").default>, allowPicking?: boolean): void;
936
931
  removeFeature(feature: import("ol").Feature<import("ol/geom/Geometry").default>): void;
@@ -943,6 +938,10 @@ export class VectorContext {
943
938
  * Clears all collections and maps
944
939
  */
945
940
  clear(): void;
941
+ /**
942
+ * Destroys this context and all its resources
943
+ */
944
+ destroy(): void;
946
945
  }
947
946
 
948
947
 
@@ -1143,10 +1142,6 @@ export class CesiumTilesetLayer extends FeatureLayer implements SplitLayer {
1143
1142
  * style, use setStyle to change
1144
1143
  */
1145
1144
  readonly style: StyleItem;
1146
- /**
1147
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
1148
- */
1149
- readonly genericFeatureProperties: any;
1150
1145
  /**
1151
1146
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
1152
1147
  * for this extent (e.g. {@see RasterLayer})
@@ -1217,7 +1212,7 @@ export class CesiumTilesetLayer extends FeatureLayer implements SplitLayer {
1217
1212
  readonly className: string;
1218
1213
  }
1219
1214
 
1220
- export interface CzmlOptions extends DataSourceOptions {
1215
+ export interface CzmlOptions extends LayerOptions {
1221
1216
  sourceUri?: string | undefined;
1222
1217
  }
1223
1218
 
@@ -1310,10 +1305,6 @@ export class CzmlLayer extends DataSourceLayer {
1310
1305
  readonly className: string;
1311
1306
  }
1312
1307
 
1313
- export interface DataSourceOptions extends LayerOptions {
1314
- genericFeatureProperties?: any | undefined;
1315
- }
1316
-
1317
1308
  export interface DataSourcePickedObject {
1318
1309
  id: import("@vcmap/cesium").Entity;
1319
1310
  clickedPosition: ClickPosition;
@@ -1329,8 +1320,7 @@ export interface DataSourceImplementationOptions extends LayerImplementationOpti
1329
1320
  * Represents a layer of Cesium.Entity
1330
1321
  */
1331
1322
  export class DataSourceLayer extends Layer {
1332
- constructor(options: DataSourceOptions);
1333
- static getDefaultOptions(): DataSourceOptions;
1323
+ constructor(options: LayerOptions);
1334
1324
  /**
1335
1325
  * The entities of this layer. Use the `addEntity` API to add Enitities to ensure interoperability with vcm interfaces
1336
1326
  */
@@ -1357,7 +1347,6 @@ export class DataSourceLayer extends Layer {
1357
1347
  */
1358
1348
  removeEntityById(id: string): void;
1359
1349
  objectClickedHandler(object: DataSourcePickedObject): any;
1360
- getGenericFeatureFromClickedObject(object: DataSourcePickedObject): GenericFeature;
1361
1350
  /**
1362
1351
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
1363
1352
  * for this extent (e.g. {@see RasterLayer})
@@ -1432,10 +1421,6 @@ export class DataSourceLayer extends Layer {
1432
1421
  */
1433
1422
  export interface FeatureLayerOptions extends LayerOptions {
1434
1423
  style?: DeclarativeStyleItemOptions | VectorStyleItemOptions | StyleItem | undefined;
1435
- /**
1436
- * properties to add to generic features, eg for display in the balloon
1437
- */
1438
- genericFeatureProperties?: any | undefined;
1439
1424
  balloonHeightOffset?: number;
1440
1425
  /**
1441
1426
  * vcs:undocumented
@@ -1480,20 +1465,7 @@ export class FeatureLayer extends Layer {
1480
1465
  * style, use setStyle to change
1481
1466
  */
1482
1467
  readonly style: StyleItem;
1483
- /**
1484
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
1485
- */
1486
- readonly genericFeatureProperties: any;
1487
1468
  objectClickedHandler(object: any | import("ol").Feature<import("ol/geom/Geometry").default> | import("@vcmap/cesium").Cesium3DTilePointFeature | import("@vcmap/cesium").Cesium3DTileFeature | DataSourcePickedObject): any;
1488
- /**
1489
- * This is called by the selectBehavior to create generic features from clicked objects
1490
- * needs to be implemented by each layer which has clickable objects
1491
- */
1492
- getGenericFeatureFromClickedObject(object: any | VectorClickedObject | import("ol").Feature<import("ol/geom/Geometry").default>): GenericFeature;
1493
- /**
1494
- * Set properties, which are always added to the generic object, eg. for use in balloons
1495
- */
1496
- assignGenericFeatureProperties(properties: any): void;
1497
1469
  getStyleOrDefaultStyle(styleOptions?: DeclarativeStyleItemOptions | VectorStyleItemOptions | StyleItem, defaultStyle?: VectorStyleItem | DeclarativeStyleItem): StyleItem;
1498
1470
  /**
1499
1471
  * Sets the style based on a styleName on a layer
@@ -1718,10 +1690,6 @@ export class FeatureStoreLayer extends VectorLayer {
1718
1690
  * style, use setStyle to change
1719
1691
  */
1720
1692
  readonly style: StyleItem;
1721
- /**
1722
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
1723
- */
1724
- readonly genericFeatureProperties: any;
1725
1693
  /**
1726
1694
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
1727
1695
  * for this extent (e.g. {@see RasterLayer})
@@ -2131,10 +2099,6 @@ export class GeoJSONLayer extends VectorLayer {
2131
2099
  * style, use setStyle to change
2132
2100
  */
2133
2101
  readonly style: StyleItem;
2134
- /**
2135
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
2136
- */
2137
- readonly genericFeatureProperties: any;
2138
2102
  /**
2139
2103
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
2140
2104
  * for this extent (e.g. {@see RasterLayer})
@@ -2237,16 +2201,6 @@ export class GlobalHider {
2237
2201
  hasFeature(uuid: string | number, feature: import("ol").Feature<import("ol/geom/Geometry").default> | import("@vcmap/cesium").Cesium3DTileFeature | import("@vcmap/cesium").Cesium3DTilePointFeature | import("@vcmap/cesium").Entity): boolean;
2238
2202
  }
2239
2203
 
2240
- export interface GenericFeature {
2241
- longitude: number;
2242
- latitude: number;
2243
- height: number;
2244
- layerName: string;
2245
- layerClass: string;
2246
- attributes: any;
2247
- relativeToGround: boolean;
2248
- }
2249
-
2250
2204
  export interface SplitLayer extends Layer {
2251
2205
  splitDirection: import("@vcmap/cesium").SplitDirection;
2252
2206
  splitDirectionChanged: VcsEvent<import("@vcmap/cesium").SplitDirection>;
@@ -2948,10 +2902,6 @@ export class PointCloudLayer extends CesiumTilesetLayer {
2948
2902
  * style, use setStyle to change
2949
2903
  */
2950
2904
  readonly style: StyleItem;
2951
- /**
2952
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
2953
- */
2954
- readonly genericFeatureProperties: any;
2955
2905
  /**
2956
2906
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
2957
2907
  * for this extent (e.g. {@see RasterLayer})
@@ -3880,8 +3830,6 @@ export function updateGlobalHider(globalHider: GlobalHider, source: import("ol/s
3880
3830
 
3881
3831
  export function synchronizeFeatureVisibilityWithSource(featureVisibility: FeatureVisibility, source: import("ol/source").Vector<import("ol/geom/Geometry").default>, globalHider: GlobalHider): ((...params: any[]) => void)[];
3882
3832
 
3883
- export function getGenericFeatureFromClickedObject(object: VectorClickedObject, layer: VectorLayer | VectorTileLayer): GenericFeature;
3884
-
3885
3833
  /**
3886
3834
  */
3887
3835
  export interface VectorOptions extends FeatureLayerOptions {
@@ -4051,10 +3999,6 @@ export class VectorLayer extends FeatureLayer {
4051
3999
  * style, use setStyle to change
4052
4000
  */
4053
4001
  readonly style: StyleItem;
4054
- /**
4055
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
4056
- */
4057
- readonly genericFeatureProperties: any;
4058
4002
  /**
4059
4003
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
4060
4004
  * for this extent (e.g. {@see RasterLayer})
@@ -4199,28 +4143,74 @@ export interface VectorPropertiesOptions {
4199
4143
  * in degrees
4200
4144
  */
4201
4145
  modelRoll?: number;
4146
+ modelAutoScale?: boolean;
4202
4147
  /**
4203
4148
  * Model options are merged with the model definition from model url, scale and orientation and accepts any option passed to a Cesium.Model.
4204
4149
  */
4205
4150
  modelOptions?: any | undefined;
4151
+ /**
4152
+ * primitive options to render in 3D instead of a billboard
4153
+ */
4154
+ primitiveOptions?: VectorPropertiesPrimitiveOptions;
4206
4155
  /**
4207
4156
  * a base URL to resolve relative model URLs against.
4208
4157
  */
4209
4158
  baseUrl?: string | undefined;
4210
4159
  }
4211
4160
 
4212
- export interface VectorPropertiesModelOptions {
4213
- url: string;
4161
+ export interface VectorPropertiesBaseOptions {
4214
4162
  scale: number[];
4215
4163
  heading: number;
4216
4164
  pitch: number;
4217
4165
  roll: number;
4166
+ autoScale: boolean;
4167
+ }
4168
+
4169
+ export interface VectorPropertiesModelOptions extends VectorPropertiesBaseOptions {
4170
+ url: string;
4171
+ }
4172
+
4173
+ /**
4174
+ */
4175
+ export interface VectorPropertiesPrimitiveOptions {
4176
+ type: PrimitiveOptionsType;
4177
+ /**
4178
+ * the options for the specified geometry
4179
+ */
4180
+ geometryOptions: any;
4181
+ depthFailColor?: import("ol/color").Color | import("ol/colorlike").ColorLike;
4182
+ /**
4183
+ * an offset to apply to the geometry
4184
+ */
4185
+ offset?: import("ol/coordinate").Coordinate;
4186
+ /**
4187
+ * additional options passed to the Primitive constructor
4188
+ */
4189
+ additionalOptions?: any;
4190
+ }
4191
+
4192
+ export interface VectorPropertiesPrimitive extends VectorPropertiesBaseOptions {
4193
+ primitiveOptions: VectorPropertiesPrimitiveOptions;
4194
+ }
4195
+
4196
+ export const enum PrimitiveOptionsType {
4197
+ CYLINDER,
4198
+ SPHERE,
4199
+ ELLIPSE,
4200
+ ELLIPSOID,
4201
+ BOC
4218
4202
  }
4219
4203
 
4220
4204
  export const enum AltitudeModeCesium {
4205
+ clampToGround,
4206
+ absolute,
4207
+ relativeToGround
4221
4208
  }
4222
4209
 
4223
4210
  export const enum ClassificationTypeCesium {
4211
+ both,
4212
+ cesium3DTile,
4213
+ terrain
4224
4214
  }
4225
4215
 
4226
4216
  export function parseNearFarScalar(value: number[], defaultValue: import("@vcmap/cesium").NearFarScalar | undefined): import("@vcmap/cesium").NearFarScalar | undefined;
@@ -4299,8 +4289,16 @@ export class VectorProperties {
4299
4289
  * Get the features or the properties modelOptions. Returns an empty Object if both are undefined
4300
4290
  */
4301
4291
  getModelOptions(feature: import("ol").Feature<import("ol/geom/Geometry").default>): any;
4292
+ modelAutoScale: any;
4293
+ getModelAutoScale(feature: import("ol").Feature<import("ol/geom/Geometry").default>): any | boolean;
4302
4294
  baseUrl: any;
4303
4295
  getBaseUrl(feature: import("ol").Feature<import("ol/geom/Geometry").default>): string;
4296
+ primitiveOptions: any;
4297
+ getPrimitiveOptions(feature: import("ol").Feature<import("ol/geom/Geometry").default>): VectorPropertiesPrimitiveOptions | null;
4298
+ /**
4299
+ * Returns the primive definition of this feature
4300
+ */
4301
+ getPrimitive(feature: import("ol").Feature<import("ol/geom/Geometry").default>): VectorPropertiesPrimitive | null;
4304
4302
  getModel(feature: import("ol").Feature<import("ol/geom/Geometry").default>): VectorPropertiesModelOptions | null;
4305
4303
  /**
4306
4304
  * resets values, either given, or default Value raises propertyChanged event once;
@@ -4428,10 +4426,6 @@ export class VectorTileLayer extends FeatureLayer {
4428
4426
  * style, use setStyle to change
4429
4427
  */
4430
4428
  readonly style: StyleItem;
4431
- /**
4432
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
4433
- */
4434
- readonly genericFeatureProperties: any;
4435
4429
  /**
4436
4430
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
4437
4431
  * for this extent (e.g. {@see RasterLayer})
@@ -4572,10 +4566,6 @@ export class WFSLayer extends VectorLayer {
4572
4566
  * style, use setStyle to change
4573
4567
  */
4574
4568
  readonly style: StyleItem;
4575
- /**
4576
- * Generic properties to be added to each feature. Use assignGenericFeatureProperties to change them.
4577
- */
4578
- readonly genericFeatureProperties: any;
4579
4569
  /**
4580
4570
  * Metadata on the extent of the data in this layer. Depending on the implementation, data is only requested
4581
4571
  * for this extent (e.g. {@see RasterLayer})
@@ -5002,6 +4992,10 @@ export class BaseOLMap extends VcsMap {
5002
4992
  * When setting the layer colleciton, the destroyLayerCollection flag is automatically set to false.
5003
4993
  */
5004
4994
  layerCollection: LayerCollection;
4995
+ /**
4996
+ * An event raised on the maps post render
4997
+ */
4998
+ readonly postRender: VcsEvent<VcsMapRenderEvent>;
5005
4999
  /**
5006
5000
  * unique Name
5007
5001
  */
@@ -5088,6 +5082,11 @@ export interface CesiumMapOptions extends VcsMapOptions {
5088
5082
  globeColor?: string | undefined;
5089
5083
  }
5090
5084
 
5085
+ export interface CesiumMapEvent {
5086
+ scene: import("@vcmap/cesium").Scene;
5087
+ time: import("@vcmap/cesium").JulianDate;
5088
+ }
5089
+
5091
5090
  /**
5092
5091
  * Cesium Globe Map Class (3D map)
5093
5092
  */
@@ -5120,6 +5119,7 @@ export class CesiumMap extends VcsMap {
5120
5119
  * @returns the array of coordinates with heights updated in place
5121
5120
  */
5122
5121
  getHeightFromTerrain(positions: import("ol/coordinate").Coordinate[]): Promise<import("ol/coordinate").Coordinate[]>;
5122
+ getCurrentResolutionFromCartesian(cartesian: import("@vcmap/cesium").Cartesian3): number;
5123
5123
  /**
5124
5124
  * set dataSource clock as display clock to visualize time dependent animation
5125
5125
  */
@@ -5248,6 +5248,10 @@ export class CesiumMap extends VcsMap {
5248
5248
  * When setting the layer colleciton, the destroyLayerCollection flag is automatically set to false.
5249
5249
  */
5250
5250
  layerCollection: LayerCollection;
5251
+ /**
5252
+ * An event raised on the maps post render
5253
+ */
5254
+ readonly postRender: VcsEvent<VcsMapRenderEvent>;
5251
5255
  /**
5252
5256
  * unique Name
5253
5257
  */
@@ -5354,6 +5358,10 @@ export class ObliqueMap extends BaseOLMap {
5354
5358
  * When setting the layer colleciton, the destroyLayerCollection flag is automatically set to false.
5355
5359
  */
5356
5360
  layerCollection: LayerCollection;
5361
+ /**
5362
+ * An event raised on the maps post render
5363
+ */
5364
+ readonly postRender: VcsEvent<VcsMapRenderEvent>;
5357
5365
  /**
5358
5366
  * unique Name
5359
5367
  */
@@ -5426,6 +5434,10 @@ export class OpenlayersMap extends BaseOLMap {
5426
5434
  * When setting the layer colleciton, the destroyLayerCollection flag is automatically set to false.
5427
5435
  */
5428
5436
  layerCollection: LayerCollection;
5437
+ /**
5438
+ * An event raised on the maps post render
5439
+ */
5440
+ readonly postRender: VcsEvent<VcsMapRenderEvent>;
5429
5441
  /**
5430
5442
  * unique Name
5431
5443
  */
@@ -5460,6 +5472,11 @@ export interface ClickPosition {
5460
5472
  exactPosition?: boolean | undefined;
5461
5473
  }
5462
5474
 
5475
+ export interface VcsMapRenderEvent {
5476
+ map: VcsMap;
5477
+ originalEvent: import("ol").MapEvent | CesiumMapEvent;
5478
+ }
5479
+
5463
5480
  /**
5464
5481
  * Map Base Class, each different map is derived from this abstract base class.
5465
5482
  */
@@ -5507,6 +5524,10 @@ export class VcsMap extends VcsObject {
5507
5524
  */
5508
5525
  readonly target: HTMLElement | null;
5509
5526
  layerCollection: any;
5527
+ /**
5528
+ * An event raised on the maps post render
5529
+ */
5530
+ readonly postRender: VcsEvent<VcsMapRenderEvent>;
5510
5531
  /**
5511
5532
  * Determines whether this map can show this viewpoint. Returns true in any other map then {@link Oblique}
5512
5533
  */
@@ -6240,6 +6261,109 @@ export class OverrideClassRegistry<T extends Object|VcsObject> {
6240
6261
  destroy(): void;
6241
6262
  }
6242
6263
 
6264
+ /**
6265
+ */
6266
+ export interface ArcStyleOptions extends ArrowStyleOptions {
6267
+ /**
6268
+ * factor to calculate the 'height' of an arc, based on the distance from start to end
6269
+ */
6270
+ arcFactor?: number;
6271
+ /**
6272
+ * number of segments to interpolate the arc by
6273
+ */
6274
+ numberOfSegments?: number;
6275
+ }
6276
+
6277
+ /**
6278
+ */
6279
+ export interface ArcStruct {
6280
+ /**
6281
+ * undefined if not an arc
6282
+ */
6283
+ geometry?: import("ol/geom").LineString;
6284
+ /**
6285
+ * undefined if not an arc
6286
+ */
6287
+ coordinates?: import("ol/coordinate").Coordinate[];
6288
+ destroy: (...params: any[]) => any;
6289
+ }
6290
+
6291
+ /**
6292
+ * Added to feature to hold there respective arc structure
6293
+ */
6294
+ export const featureArcStruct: symbol;
6295
+
6296
+ /**
6297
+ * A style which applies an arc to LineString geometries depending on their first and last coordinates.
6298
+ * All other coordinates will be ignored. This still will
6299
+ * not render non-LineString geometries (same as {@see ArrowStyle}).
6300
+ */
6301
+ export class ArcStyle extends ArrowStyle {
6302
+ constructor(options?: ArcStyleOptions);
6303
+ numberOfSegments: any;
6304
+ arcFactor: any;
6305
+ primitiveOptions: VectorPropertiesPrimitiveOptions;
6306
+ end: ArrowEnd;
6307
+ /**
6308
+ * Same as getStroke().getWidth() / getStroke().setWidth()
6309
+ */
6310
+ width: number;
6311
+ /**
6312
+ * The color of the stroke and icon styles. Setting the color will not re-apply the icons color.
6313
+ */
6314
+ color: import("ol/color").Color | import("ol/colorlike").ColorLike;
6315
+ }
6316
+
6317
+ /**
6318
+ */
6319
+ export interface ArrowStyleOptions {
6320
+ /**
6321
+ * color used to color in the line & the icon
6322
+ */
6323
+ color?: import("ol/color").Color | import("ol/colorlike").ColorLike;
6324
+ /**
6325
+ * passed to ol.Style.Stroke
6326
+ */
6327
+ width?: number;
6328
+ /**
6329
+ * passed to ol.Style
6330
+ */
6331
+ zIndex?: number;
6332
+ /**
6333
+ * icon options to use. if none are provided, if is attempted to derive the arrow icon from the primitive options. if providing your own icon, the color will not be options.color by default
6334
+ */
6335
+ arrowIcon?: import("ol/style/Icon").Options | import("ol/style").Image;
6336
+ /**
6337
+ * the default primitive options are a cylinder with a bottom radius of 1/3 its length and 0 top radius
6338
+ */
6339
+ primitiveOptions?: VectorPropertiesPrimitiveOptions;
6340
+ /**
6341
+ * end to place the arrow head at
6342
+ */
6343
+ end?: ArrowEnd;
6344
+ }
6345
+
6346
+ export const enum ArrowEnd {
6347
+ }
6348
+
6349
+ /**
6350
+ * A style which renders arrow heads at the ends of a line string. This style cannot be applied to non-LineString geometries.
6351
+ * When setting this on a layer with heterogeneous geometry types, use a style function.
6352
+ */
6353
+ export class ArrowStyle extends Style {
6354
+ constructor(options?: ArrowStyleOptions);
6355
+ primitiveOptions: VectorPropertiesPrimitiveOptions;
6356
+ end: ArrowEnd;
6357
+ width: any;
6358
+ color: any;
6359
+ /**
6360
+ * Returns the style used to render primitives (a style with a circle image and the color of this style).
6361
+ */
6362
+ getOlcsStyle(): import("ol/style").Style;
6363
+ protected _getCloneOptions(): ArrowStyleOptions;
6364
+ clone(): ArrowStyle;
6365
+ }
6366
+
6243
6367
  export interface DeclarativeStyleItemConditions {
6244
6368
  conditions: (string[] | string)[];
6245
6369
  }
@@ -6876,6 +7000,30 @@ export interface CreateFeatureSession extends EditorSession {
6876
7000
  finish: (...params: any[]) => any;
6877
7001
  }
6878
7002
 
7003
+ /**
7004
+ * Creates an editor session to create features of the given geometry type.
7005
+ * While the session is active: Do not change the geometry on the current feature (the last created one)
7006
+ * and do not change crucial olcs properties on the feature or the layer (olcs_altitudeMode)
7007
+ */
7008
+ export function startCreateFeatureSession(app: VcsApp, layer: VectorLayer, geometryType: GeometryType): CreateFeatureSession;
7009
+
7010
+ /**
7011
+ */
7012
+ export interface EditFeaturesSession extends EditorSession {
7013
+ featureSelection: SelectMultiFeatureInteraction;
7014
+ /**
7015
+ * read only access to the current mode
7016
+ */
7017
+ mode: TransformationMode;
7018
+ setMode: (...params: any[]) => any;
7019
+ modeChanged: VcsEvent<TransformationMode>;
7020
+ }
7021
+
7022
+ /**
7023
+ * Creates an editor session to select, translate, rotate & scale the feature on a given layer
7024
+ */
7025
+ export function startEditFeaturesSession(app: VcsApp, layer: VectorLayer, initialMode?: TransformationMode, highlightStyle?: import("ol/style").Style): EditFeaturesSession;
7026
+
6879
7027
  /**
6880
7028
  */
6881
7029
  export interface EditGeometrySession extends EditorSession {
@@ -6885,8 +7033,21 @@ export interface EditGeometrySession extends EditorSession {
6885
7033
  featureSelection: SelectSingleFeatureInteraction;
6886
7034
  }
6887
7035
 
7036
+ /**
7037
+ * Creates the edit geometry session.
7038
+ */
7039
+ export function startEditGeometrySession(app: VcsApp, layer: VectorLayer): EditGeometrySession;
7040
+
6888
7041
  export function createVertex(coordinate: import("ol/coordinate").Coordinate): Vertex;
6889
7042
 
7043
+ /**
7044
+ * Returns the closest point on a 2D line. the Z index is taken from the point.
7045
+ * @param start - line segment start
7046
+ * @param end - line segment end
7047
+ * @param point - point to project
7048
+ */
7049
+ export function getClosestPointOn2DLine(start: import("ol/coordinate").Coordinate, end: import("ol/coordinate").Coordinate, point: import("ol/coordinate").Coordinate): import("ol/coordinate").Coordinate;
7050
+
6890
7051
  /**
6891
7052
  * @param start - line segment start
6892
7053
  * @param end - line segment end
@@ -6901,10 +7062,26 @@ export function pointOnLine3D(start: import("ol/coordinate").Coordinate, end: im
6901
7062
  */
6902
7063
  export function pointOnLine2D(start: import("ol/coordinate").Coordinate, end: import("ol/coordinate").Coordinate, point: import("ol/coordinate").Coordinate, epsilon?: number): boolean;
6903
7064
 
6904
- export function createVerticalPlane(originCoordinates: import("ol/coordinate").Coordinate, scene: import("@vcmap/cesium").Scene): import("@vcmap/cesium").Plane;
7065
+ export function createCameraVerticalPlane(originCoordinates: import("ol/coordinate").Coordinate, scene: import("@vcmap/cesium").Scene): import("@vcmap/cesium").Plane;
6905
7066
 
6906
7067
  export function createHorizontalPlane(originCoordinates: import("ol/coordinate").Coordinate, scene: import("@vcmap/cesium").Scene): import("@vcmap/cesium").Plane;
6907
7068
 
7069
+ export function getCartographicFromPlane(plane: import("@vcmap/cesium").Plane, camera: import("@vcmap/cesium").Camera, windowPosition: import("@vcmap/cesium").Cartesian2): import("@vcmap/cesium").Cartographic;
7070
+
7071
+ /**
7072
+ * Drapes a geometry onto the terrain by placing each coordinate at its height.
7073
+ */
7074
+ export function drapeGeometryOnTerrain(geometry: import("ol/geom").Geometry, map: VcsMap): Promise<void>;
7075
+
7076
+ /**
7077
+ * Places a geometry onto the terrain at its lowest point.
7078
+ */
7079
+ export function placeGeometryOnTerrain(geometry: import("ol/geom").Geometry, map: VcsMap): Promise<void>;
7080
+
7081
+ export function ensureFeatureAbsolute(feature: import("ol").Feature, layer: VectorLayer, cesiumMap: VcsMap): Promise<void>;
7082
+
7083
+ export function clampFeature(feature: import("ol").Feature): void;
7084
+
6908
7085
  /**
6909
7086
  * An editor session is a currently set of interactions to create or edit geometries & features.
6910
7087
  * All editor sessions can be stopped and will be stopped, if their interactions get removed from the
@@ -6918,6 +7095,9 @@ export interface EditorSession {
6918
7095
  }
6919
7096
 
6920
7097
  export const enum SessionType {
7098
+ CREATE,
7099
+ EDIT_GEOMETRY,
7100
+ EDIT_FEATURES
6921
7101
  }
6922
7102
 
6923
7103
  /**
@@ -6944,6 +7124,12 @@ export const vertexSymbol: symbol;
6944
7124
  */
6945
7125
  export const vertexIndex: symbol;
6946
7126
 
7127
+ /**
7128
+ * Symbol added to primitives and features to denote that these are handlers. It is expected, that the value of the symobl is
7129
+ * equal to an {@see AXIS_AND_PLANES}
7130
+ */
7131
+ export const handlerSymbol: symbol;
7132
+
6947
7133
 
6948
7134
 
6949
7135
  /**
@@ -7085,6 +7271,39 @@ export class CreatePolygonInteraction extends AbstractInteraction implements Cre
7085
7271
  pointerKey: number;
7086
7272
  }
7087
7273
 
7274
+ /**
7275
+ * A class to handle mouse over effects on features for editor sessions.
7276
+ * @param layerName - the layer name of the currently editing layer
7277
+ */
7278
+ export class EditFeaturesMouseOverInteraction extends AbstractInteraction {
7279
+ constructor(layerName: string, selectMultiFeatureInteraction: SelectMultiFeatureInteraction);
7280
+ /**
7281
+ * The layer name to react to
7282
+ */
7283
+ layerName: string;
7284
+ cursorStyle: CSSStyleDeclaration;
7285
+ /**
7286
+ * Reset the cursorStyle to auto
7287
+ */
7288
+ reset(): void;
7289
+ /**
7290
+ * A unique identifier for this interaction
7291
+ */
7292
+ id: string;
7293
+ /**
7294
+ * The current active bitmask for {@link EventType}
7295
+ */
7296
+ active: number;
7297
+ /**
7298
+ * The current active {@link ModificationKeyType}
7299
+ */
7300
+ modificationKey: number;
7301
+ /**
7302
+ * The currently active {@link PointerKeyType}
7303
+ */
7304
+ pointerKey: number;
7305
+ }
7306
+
7088
7307
  /**
7089
7308
  * only exported for tests
7090
7309
  */
@@ -7123,6 +7342,16 @@ export class EditGeometryMouseOverInteraction extends AbstractInteraction {
7123
7342
  pointerKey: number;
7124
7343
  }
7125
7344
 
7345
+ /**
7346
+ * This interaction ensure a potential handler is dragged in 3D when it is obscured by a transparent feature.
7347
+ * It uses drillPick on MOVE if: the map is 3D, there is a feature at said position, there is a feature selected in
7348
+ * the feature selection & the feature at the position is _not_ a handler
7349
+ */
7350
+ export class EnsureHandlerSelectionInteraction {
7351
+ constructor(selectMultiFeatureInteraction: SelectMultiFeatureInteraction);
7352
+ pipe(event: InteractionEvent): Promise<InteractionEvent>;
7353
+ }
7354
+
7126
7355
  export interface VertexInsertedEvent {
7127
7356
  vertex: Vertex;
7128
7357
  index: number;
@@ -7183,6 +7412,44 @@ export class RemoveVertexInteraction extends AbstractInteraction {
7183
7412
  pointerKey: number;
7184
7413
  }
7185
7414
 
7415
+ /**
7416
+ * Interaction to create a selection set from the given layer.
7417
+ * Will use CTRL modifier key to add more features to the set.
7418
+ * Clears the set if not clicking a feature
7419
+ * Creates a new set when clicking a feature
7420
+ * FeatureStore features will be converted to their dynamic state on selection.
7421
+ */
7422
+ export class SelectMultiFeatureInteraction extends AbstractInteraction {
7423
+ constructor(layer: VectorLayer);
7424
+ /**
7425
+ * Event raised when the feature selection changes. Will be called with an array of features or an empty array, when no feature is selected
7426
+ */
7427
+ readonly featuresChanged: VcsEvent<import("ol").Feature[]>;
7428
+ selectedFeatures: any;
7429
+ hasFeatureId(featureId: string): boolean;
7430
+ setSelectionSet(features: (import("ol").Feature | import("@vcmap/cesium").Cesium3DTileFeature | import("@vcmap/cesium").Cesium3DTilePointFeature | import("@vcmap/cesium").Entity)[]): Promise<void>;
7431
+ /**
7432
+ * Clears the interaction, removing all features and calling the featureChange event with an empty array
7433
+ */
7434
+ clear(): void;
7435
+ /**
7436
+ * A unique identifier for this interaction
7437
+ */
7438
+ id: string;
7439
+ /**
7440
+ * The current active bitmask for {@link EventType}
7441
+ */
7442
+ active: number;
7443
+ /**
7444
+ * The current active {@link ModificationKeyType}
7445
+ */
7446
+ modificationKey: number;
7447
+ /**
7448
+ * The currently active {@link PointerKeyType}
7449
+ */
7450
+ pointerKey: number;
7451
+ }
7452
+
7186
7453
  /**
7187
7454
  * Class to select features for editing.
7188
7455
  * Static FeatureStore features will be converted into their dynamic form
@@ -7245,6 +7512,215 @@ export class TranslateVertexInteraction extends AbstractInteraction {
7245
7512
  pointerKey: number;
7246
7513
  }
7247
7514
 
7515
+ /**
7516
+ * A class to handle events on a {@see TransformationHandler}. Should be used with {@see TransformationHandler} created for mode TransformationMode.EXTRUDE.
7517
+ * If the Z handler is dragged, the extruded event will be raised with a delta in Z direction. This
7518
+ * interaction only works if a {@see CesiumMap} is the active map.
7519
+ */
7520
+ export class ExtrudeInteraction extends AbstractInteraction {
7521
+ constructor(transformationHandler: TransformationHandler);
7522
+ /**
7523
+ * Event raised with the extrusion delta to the last event fired.
7524
+ */
7525
+ readonly extruded: VcsEvent<number>;
7526
+ /**
7527
+ * A unique identifier for this interaction
7528
+ */
7529
+ id: string;
7530
+ /**
7531
+ * The current active bitmask for {@link EventType}
7532
+ */
7533
+ active: number;
7534
+ /**
7535
+ * The current active {@link ModificationKeyType}
7536
+ */
7537
+ modificationKey: number;
7538
+ /**
7539
+ * The currently active {@link PointerKeyType}
7540
+ */
7541
+ pointerKey: number;
7542
+ }
7543
+
7544
+ /**
7545
+ */
7546
+ export interface RotationEvent {
7547
+ /**
7548
+ * in radians
7549
+ */
7550
+ angle: number;
7551
+ /**
7552
+ * the axis of rotation
7553
+ */
7554
+ axis: AXIS_AND_PLANES;
7555
+ }
7556
+
7557
+ /**
7558
+ * A class to handle events on a {@see TransformationHandler}. Should be used with {@see TransformationHandler} created for mode TransformationMode.ROTATE.
7559
+ * If the rings are dragged, the rotated event will be raised.
7560
+ */
7561
+ export class RotateInteraction extends AbstractInteraction {
7562
+ constructor(transformationHandler: TransformationHandler);
7563
+ /**
7564
+ * The event raised, if the rings are dragged. Event is raised with the angle delta to the last event in radians.
7565
+ */
7566
+ readonly rotated: VcsEvent<RotationEvent>;
7567
+ /**
7568
+ * A unique identifier for this interaction
7569
+ */
7570
+ id: string;
7571
+ /**
7572
+ * The current active bitmask for {@link EventType}
7573
+ */
7574
+ active: number;
7575
+ /**
7576
+ * The current active {@link ModificationKeyType}
7577
+ */
7578
+ modificationKey: number;
7579
+ /**
7580
+ * The currently active {@link PointerKeyType}
7581
+ */
7582
+ pointerKey: number;
7583
+ }
7584
+
7585
+ /**
7586
+ * A class to handle events on a {@see TransformationHandler}. Should be used with {@see TransformationHandler} created for mode TransformationMode.SCALE..
7587
+ * If the handlers are dragged, the scaled event will be raised.
7588
+ */
7589
+ export class ScaleInteraction extends AbstractInteraction {
7590
+ constructor(transformationHandler: TransformationHandler);
7591
+
7592
+
7593
+ /**
7594
+ * Event raised if the handlers are dragged. The resulting array is of type [sx, sy, sz] where all numbers
7595
+ * are considered to be deltas to the previous event (where 1 means no scaling).
7596
+ */
7597
+ readonly scaled: VcsEvent<number[]>;
7598
+ /**
7599
+ * A unique identifier for this interaction
7600
+ */
7601
+ id: string;
7602
+ /**
7603
+ * The current active bitmask for {@link EventType}
7604
+ */
7605
+ active: number;
7606
+ /**
7607
+ * The current active {@link ModificationKeyType}
7608
+ */
7609
+ modificationKey: number;
7610
+ /**
7611
+ * The currently active {@link PointerKeyType}
7612
+ */
7613
+ pointerKey: number;
7614
+ }
7615
+
7616
+ /**
7617
+ * Handlers are map specific transformation handlers wich enable the use of the transformation interactions.
7618
+ * There visualization is {@see TransformationMode} specific. It is not adviced to create these handlers yourself,
7619
+ * use {@see createTransformationHandler} instead.
7620
+ */
7621
+ export interface Handlers {
7622
+ /**
7623
+ * whether to show or hide all handlers
7624
+ */
7625
+ show: boolean;
7626
+ /**
7627
+ * update the center of the handlers
7628
+ */
7629
+ setCenter: (...params: any[]) => any;
7630
+ /**
7631
+ * highlight the given axis
7632
+ */
7633
+ showAxis: AXIS_AND_PLANES;
7634
+ /**
7635
+ * display Z axis handlers in grey and do not allow them to be picked
7636
+ */
7637
+ greyOutZ: boolean;
7638
+ /**
7639
+ * destroy the handlers, removing any resources created by create2DHandlers or create3DHandlers
7640
+ */
7641
+ destroy: (...params: any[]) => any;
7642
+ }
7643
+
7644
+ /**
7645
+ * This interface provides an abstraction from the other {@see Handlers} interface.
7646
+ */
7647
+ export interface TransformationHandler {
7648
+ /**
7649
+ * translate the center of the underlying handlers
7650
+ */
7651
+ translate: (...params: any[]) => any;
7652
+ /**
7653
+ * readonly current center of the handler. this is a copy, not a reference
7654
+ */
7655
+ center: import("ol/coordinate").Coordinate;
7656
+ /**
7657
+ * highlight the given axis
7658
+ */
7659
+ showAxis: AXIS_AND_PLANES;
7660
+ /**
7661
+ * readonly value indicating whether the handlers are showing (proxy for: features are selected)
7662
+ */
7663
+ showing: boolean;
7664
+ /**
7665
+ * destroy the handler and any resources created by it
7666
+ */
7667
+ destroy: (...params: any[]) => any;
7668
+ }
7669
+
7670
+ export const enum AXIS_AND_PLANES {
7671
+ X,
7672
+ Y,
7673
+ Z,
7674
+ XY,
7675
+ XZ,
7676
+ YZ,
7677
+ NONE
7678
+ }
7679
+
7680
+ export const enum TransformationMode {
7681
+ TRANSLATE,
7682
+ ROTATE,
7683
+ SCALE,
7684
+ EXTRUDE
7685
+ }
7686
+
7687
+ export const greyedOutColor: import("@vcmap/cesium").Color;
7688
+
7689
+ export function is1DAxis(axis: AXIS_AND_PLANES): boolean;
7690
+
7691
+ export function is2DAxis(axis: AXIS_AND_PLANES): boolean;
7692
+
7693
+ /**
7694
+ * A class to handle events on a {@see TransformationHandler}. Should be used with {@see TransformationHandler} created for mode TransformationMode.TRANSLATE.
7695
+ * If the rings are dragged, the translated event will be raised.
7696
+ */
7697
+ export class TranslateInteraction extends AbstractInteraction {
7698
+ constructor(transformationHandler: TransformationHandler);
7699
+
7700
+
7701
+ /**
7702
+ * Event raised if the handlers are dragged. The resulting array is of type [dx, dy, dz] where all numbers
7703
+ * are considered to be deltas to the previous event (where 0 means no translating).
7704
+ */
7705
+ readonly translated: VcsEvent<number[]>;
7706
+ /**
7707
+ * A unique identifier for this interaction
7708
+ */
7709
+ id: string;
7710
+ /**
7711
+ * The current active bitmask for {@link EventType}
7712
+ */
7713
+ active: number;
7714
+ /**
7715
+ * The current active {@link ModificationKeyType}
7716
+ */
7717
+ modificationKey: number;
7718
+ /**
7719
+ * The currently active {@link PointerKeyType}
7720
+ */
7721
+ pointerKey: number;
7722
+ }
7723
+
7248
7724
  /**
7249
7725
  * Tracks layer exclusivity, added to every {@link LayerCollection}.
7250
7726
  */
@@ -7331,6 +7807,32 @@ export function validateCircle(circle: import("ol/geom/Circle").default): boolea
7331
7807
 
7332
7808
  export function getStylesArray(style: void | import("ol/style/Style").StyleLike, feature: import("ol").Feature<import("ol/geom/Geometry").default>, resolution?: number): import("ol/style/Style").default[];
7333
7809
 
7810
+ export class Extent3D {
7811
+ constructor(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number);
7812
+ static fromArray(array: number[]): Extent3D;
7813
+ static fromGeometry(geometry: import("ol/geom").Geometry): Extent3D;
7814
+ static fromHeightInfo(heightInfo: VectorHeightInfo): Extent3D;
7815
+ static fromCoordinates(coordinates: import("ol/coordinate").Coordinate[]): Extent3D;
7816
+ minX: number;
7817
+ minY: number;
7818
+ minZ: number;
7819
+ maxX: number;
7820
+ maxY: number;
7821
+ maxZ: number;
7822
+ extendWithGeometry(geometry: import("ol/geom").Geometry): void;
7823
+ extendWithHeightInfo(heightInfo: VectorHeightInfo): void;
7824
+ extendXYZ(x: number, y: number, z: number): void;
7825
+ extendXY(x: number, y: number): void;
7826
+ extendZ(z: number): void;
7827
+ extendFlatCoordinates(flatCoordinates: number[], stride: number): void;
7828
+ to2D(): import("ol/extent").Extent;
7829
+ toArray(): number[];
7830
+ isEmpty(): boolean;
7831
+ getCenter(): import("ol/coordinate").Coordinate;
7832
+ getSize(): number[];
7833
+ clone(): Extent3D;
7834
+ }
7835
+
7334
7836
  export function getMaterialAppearance(scene: import("@vcmap/cesium").Scene, fill: import("ol/style/Fill").default, feature: import("ol").Feature<import("ol/geom/Geometry").default>): import("@vcmap/cesium").MaterialAppearance;
7335
7837
 
7336
7838
  export function createClassificationPrimitive(options: any, geometries: import("@vcmap/cesium").Geometry[], color: import("@vcmap/cesium").Color, classificationType: import("@vcmap/cesium").ClassificationType): import("@vcmap/cesium").ClassificationPrimitive;
@@ -7361,11 +7863,17 @@ export function getStoreyOptions(storeyHeights: number[], initialHeight: number,
7361
7863
 
7362
7864
  export function addPrimitivesToContext(feature: import("ol").Feature<import("ol/geom/Geometry").default>, style: import("ol/style/Style").default, geometries: import("ol/geom/SimpleGeometry").default[], vectorProperties: VectorProperties, scene: import("@vcmap/cesium").Scene, geometryFactory: VectorGeometryFactoryType, context: VectorContext | ClusterContext): void;
7363
7865
 
7866
+ export function addArrowsToContext(feature: import("ol").Feature, style: ArrowStyle, validGeometries: import("ol/geom").LineString[], vectorProperties: VectorProperties, scene: import("@vcmap/cesium").Scene, lineGeometryFactory: VectorGeometryFactoryType, context: VectorContext | ClusterContext): void;
7867
+
7364
7868
  /**
7365
7869
  * validates if a lineString is renderable
7366
7870
  */
7367
7871
  export function validateLineString(lineString: import("ol/geom/LineString").default): boolean;
7368
7872
 
7873
+ export function getModelOptions(feature: import("ol").Feature<import("ol/geom/Geometry").default>, wgs84Positions: import("ol/coordinate").Coordinate[], positions: import("@vcmap/cesium").Cartesian3[], vectorProperties: VectorProperties, scene: import("@vcmap/cesium").Scene): null | any;
7874
+
7875
+ export function getPrimitiveOptions(feature: import("ol").Feature<import("ol/geom/Geometry").default>, style: import("ol/style/Style").default, wgs84Positions: import("ol/coordinate").Coordinate[], positions: import("@vcmap/cesium").Cartesian3[], vectorProperties: VectorProperties, scene: import("@vcmap/cesium").Scene): null | any;
7876
+
7369
7877
  export function getBillboardOptions(feature: import("ol").Feature<import("ol/geom/Geometry").default>, style: import("ol/style/Style").default, heightReference: import("@vcmap/cesium").HeightReference, vectorProperties: VectorProperties): any | null;
7370
7878
 
7371
7879
  /**
@@ -7375,8 +7883,6 @@ export function getBillboardOptions(feature: import("ol").Feature<import("ol/geo
7375
7883
  */
7376
7884
  export function getLabelOptions(feature: import("ol").Feature<import("ol/geom/Geometry").default>, style: import("ol/style/Style").default, heightReference: import("@vcmap/cesium").HeightReference, vectorProperties: VectorProperties): any | null;
7377
7885
 
7378
- export function getModelOptions(feature: import("ol").Feature<import("ol/geom/Geometry").default>, wgs84Positions: import("ol/coordinate").Coordinate[], positions: import("@vcmap/cesium").Cartesian3[], vectorProperties: VectorProperties, scene: import("@vcmap/cesium").Scene): null | import("@vcmap/cesium").Model[];
7379
-
7380
7886
  /**
7381
7887
  * validates if a point is renderable
7382
7888
  */
@@ -7562,6 +8068,10 @@ export class MapCollection extends Collection<VcsMap> {
7562
8068
  * Set split screen for these maps.
7563
8069
  */
7564
8070
  splitScreen: any;
8071
+ /**
8072
+ * Raised on the active maps post render event
8073
+ */
8074
+ readonly postRender: VcsEvent<VcsMapRenderEvent>;
7565
8075
  /**
7566
8076
  * Adds a map to the collection. This will set the collections target, {@link SplitScreen}
7567
8077
  * and the collections {@link LayerCollection} on the map.
@@ -7604,6 +8114,13 @@ export function coordinateAtDistance(coord: number[], d: number, brng: number):
7604
8114
  */
7605
8115
  export function initialBearingBetweenCoords(coords1: number[], coords2: number[]): number;
7606
8116
 
8117
+ /**
8118
+ * @param p1 - mercator
8119
+ * @param p2 - mercator
8120
+ * @returns in radians
8121
+ */
8122
+ export function getCartesianBearing(p1: import("ol/coordinate").Coordinate, p2: import("ol/coordinate").Coordinate): number;
8123
+
7607
8124
  /**
7608
8125
  * returns distance between two coordinates
7609
8126
  */
@@ -7616,6 +8133,22 @@ export function cartesian3DDistance(p1: import("ol/coordinate").Coordinate, p2:
7616
8133
  */
7617
8134
  export function modulo(n: number, m: number): number;
7618
8135
 
8136
+ export function cartographicToWgs84(cartographic: import("@vcmap/cesium").Cartographic): number[];
8137
+
8138
+ export function mercatorToCartesian(mercatorCoordinates: import("ol/coordinate").Coordinate, result?: import("@vcmap/cesium").Cartesian3): import("@vcmap/cesium").Cartesian3;
8139
+
8140
+ export function cartesianToMercator(cartesian: import("@vcmap/cesium").Cartesian3): import("ol/coordinate").Coordinate;
8141
+
8142
+ export function getMidPoint(p1: import("ol/coordinate").Coordinate, p2: import("ol/coordinate").Coordinate): import("ol/coordinate").Coordinate;
8143
+
8144
+ /**
8145
+ * Gets the pitch between two points in degrees.
8146
+ * @param p1 - mercator
8147
+ * @param p2 - mercator
8148
+ * @returns in degrees
8149
+ */
8150
+ export function getCartesianPitch(p1: import("ol/coordinate").Coordinate, p2: import("ol/coordinate").Coordinate): number;
8151
+
7619
8152
  /**
7620
8153
  * A symbol added to override collections.
7621
8154
  */