@vcmap/core 5.0.0-rc.28 → 5.0.0-rc.29

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 (191) hide show
  1. package/README.md +9 -3
  2. package/build/postinstall.js +13 -2
  3. package/index.d.ts +155 -106
  4. package/package.json +9 -4
  5. package/src/category/category.js +71 -32
  6. package/src/category/categoryCollection.js +27 -18
  7. package/src/cesium/cesiumVcsCameraPrimitive.js +13 -5
  8. package/src/cesium/entity.js +3 -1
  9. package/src/cesium/wallpaperMaterial.js +4 -2
  10. package/src/classRegistry.js +11 -4
  11. package/src/featureProvider/abstractFeatureProvider.js +43 -22
  12. package/src/featureProvider/tileProviderFeatureProvider.js +11 -5
  13. package/src/featureProvider/wmsFeatureProvider.js +37 -15
  14. package/src/interaction/abstractInteraction.js +5 -1
  15. package/src/interaction/coordinateAtPixel.js +34 -12
  16. package/src/interaction/eventHandler.js +63 -23
  17. package/src/interaction/featureAtPixelInteraction.js +96 -32
  18. package/src/interaction/featureProviderInteraction.js +23 -8
  19. package/src/interaction/interactionChain.js +19 -9
  20. package/src/interaction/interactionType.js +23 -26
  21. package/src/layer/cesium/cesiumTilesetCesiumImpl.js +45 -15
  22. package/src/layer/cesium/clusterContext.js +10 -3
  23. package/src/layer/cesium/dataSourceCesiumImpl.js +13 -4
  24. package/src/layer/cesium/openStreetMapCesiumImpl.js +7 -3
  25. package/src/layer/cesium/rasterLayerCesiumImpl.js +6 -2
  26. package/src/layer/cesium/singleImageCesiumImpl.js +14 -3
  27. package/src/layer/cesium/terrainCesiumImpl.js +3 -2
  28. package/src/layer/cesium/tmsCesiumImpl.js +15 -3
  29. package/src/layer/cesium/vectorCesiumImpl.js +69 -25
  30. package/src/layer/cesium/vectorContext.js +25 -5
  31. package/src/layer/cesium/vectorRasterTileCesiumImpl.js +15 -5
  32. package/src/layer/cesium/vectorTileImageryProvider.js +51 -13
  33. package/src/layer/cesium/wmsCesiumImpl.js +15 -3
  34. package/src/layer/cesium/wmtsCesiumImpl.js +18 -6
  35. package/src/layer/cesium/x3dmHelper.js +4 -1
  36. package/src/layer/cesiumTilesetLayer.js +55 -26
  37. package/src/layer/czmlLayer.js +11 -5
  38. package/src/layer/dataSourceLayer.js +25 -17
  39. package/src/layer/featureLayer.js +33 -18
  40. package/src/layer/featureStoreLayer.js +161 -99
  41. package/src/layer/featureStoreLayerChanges.js +57 -17
  42. package/src/layer/featureVisibility.js +89 -59
  43. package/src/layer/geojsonHelpers.js +70 -29
  44. package/src/layer/geojsonLayer.js +17 -11
  45. package/src/layer/globalHider.js +14 -4
  46. package/src/layer/layer.js +77 -44
  47. package/src/layer/layerImplementation.js +12 -4
  48. package/src/layer/oblique/layerObliqueImpl.js +3 -1
  49. package/src/layer/oblique/obliqueHelpers.js +75 -30
  50. package/src/layer/oblique/vectorObliqueImpl.js +175 -69
  51. package/src/layer/openStreetMapLayer.js +34 -20
  52. package/src/layer/openlayers/layerOpenlayersImpl.js +37 -15
  53. package/src/layer/openlayers/openStreetMapOpenlayersImpl.js +3 -1
  54. package/src/layer/openlayers/rasterLayerOpenlayersImpl.js +3 -1
  55. package/src/layer/openlayers/singleImageOpenlayersImpl.js +3 -1
  56. package/src/layer/openlayers/tileDebugOpenlayersImpl.js +3 -1
  57. package/src/layer/openlayers/tmsOpenlayersImpl.js +6 -3
  58. package/src/layer/openlayers/vectorOpenlayersImpl.js +14 -4
  59. package/src/layer/openlayers/vectorTileOpenlayersImpl.js +12 -5
  60. package/src/layer/openlayers/wmsOpenlayersImpl.js +3 -1
  61. package/src/layer/openlayers/wmtsOpenlayersImpl.js +12 -5
  62. package/src/layer/pointCloudLayer.js +21 -10
  63. package/src/layer/rasterLayer.js +73 -22
  64. package/src/layer/singleImageLayer.js +10 -7
  65. package/src/layer/terrainHelpers.js +30 -19
  66. package/src/layer/terrainLayer.js +16 -7
  67. package/src/layer/tileLoadedHelper.js +9 -4
  68. package/src/layer/tileProvider/mvtTileProvider.js +10 -4
  69. package/src/layer/tileProvider/staticGeojsonTileProvider.js +10 -4
  70. package/src/layer/tileProvider/tileProvider.js +163 -87
  71. package/src/layer/tileProvider/urlTemplateTileProvider.js +10 -4
  72. package/src/layer/tmsLayer.js +7 -6
  73. package/src/layer/vectorHelpers.js +34 -25
  74. package/src/layer/vectorLayer.js +77 -36
  75. package/src/layer/vectorProperties.js +245 -74
  76. package/src/layer/vectorSymbols.js +3 -1
  77. package/src/layer/vectorTileLayer.js +121 -70
  78. package/src/layer/wfsLayer.js +19 -8
  79. package/src/layer/wmsHelpers.js +11 -6
  80. package/src/layer/wmsLayer.js +36 -14
  81. package/src/layer/wmtsLayer.js +35 -20
  82. package/src/map/baseOLMap.js +57 -31
  83. package/src/map/cameraLimiter.js +67 -18
  84. package/src/map/cesiumMap.js +307 -95
  85. package/src/map/obliqueMap.js +84 -34
  86. package/src/map/openlayersMap.js +40 -19
  87. package/src/map/vcsMap.js +21 -8
  88. package/src/oblique/helpers.js +212 -64
  89. package/src/oblique/obliqueCollection.js +111 -48
  90. package/src/oblique/obliqueDataSet.js +53 -21
  91. package/src/oblique/obliqueImage.js +50 -17
  92. package/src/oblique/obliqueImageMeta.js +7 -6
  93. package/src/oblique/obliqueProvider.js +75 -27
  94. package/src/oblique/obliqueView.js +18 -7
  95. package/src/oblique/obliqueViewDirection.js +3 -2
  96. package/src/oblique/parseImageJson.js +57 -23
  97. package/src/ol/feature.js +8 -3
  98. package/src/ol/geom/circle.js +12 -3
  99. package/src/ol/geom/geometryCollection.js +11 -4
  100. package/src/ol/render/canvas/canvasTileRenderer.js +11 -9
  101. package/src/overrideClassRegistry.js +13 -3
  102. package/src/style/arcStyle.js +129 -36
  103. package/src/style/arrowStyle.js +57 -22
  104. package/src/style/declarativeStyleItem.js +107 -62
  105. package/src/style/shapesCategory.js +8 -6
  106. package/src/style/styleFactory.js +4 -1
  107. package/src/style/styleHelpers.js +17 -8
  108. package/src/style/styleItem.js +28 -10
  109. package/src/style/vectorStyleItem.js +160 -74
  110. package/src/style/writeStyle.js +5 -7
  111. package/src/util/clipping/clippingObject.js +72 -38
  112. package/src/util/clipping/clippingObjectManager.js +53 -19
  113. package/src/util/clipping/clippingPlaneHelper.js +120 -53
  114. package/src/util/collection.js +12 -6
  115. package/src/util/editor/createFeatureSession.js +21 -6
  116. package/src/util/editor/editFeaturesSession.js +41 -15
  117. package/src/util/editor/editGeometrySession.js +55 -30
  118. package/src/util/editor/editorHelpers.js +114 -29
  119. package/src/util/editor/editorSessionHelpers.js +8 -3
  120. package/src/util/editor/interactions/createBBoxInteraction.js +11 -3
  121. package/src/util/editor/interactions/createCircleInteraction.js +7 -2
  122. package/src/util/editor/interactions/createLineStringInteraction.js +7 -2
  123. package/src/util/editor/interactions/createPolygonInteraction.js +7 -2
  124. package/src/util/editor/interactions/editFeaturesMouseOverInteraction.js +7 -5
  125. package/src/util/editor/interactions/editGeometryMouseOverInteraction.js +8 -3
  126. package/src/util/editor/interactions/ensureHandlerSelectionInteraction.js +4 -2
  127. package/src/util/editor/interactions/insertVertexInteraction.js +17 -6
  128. package/src/util/editor/interactions/mapInteractionController.js +31 -14
  129. package/src/util/editor/interactions/removeVertexInteraction.js +4 -1
  130. package/src/util/editor/interactions/selectFeatureMouseOverInteraction.js +19 -10
  131. package/src/util/editor/interactions/selectMultiFeatureInteraction.js +33 -20
  132. package/src/util/editor/interactions/selectSingleFeatureInteraction.js +14 -8
  133. package/src/util/editor/selectFeaturesSession.js +37 -21
  134. package/src/util/editor/transformation/create2DHandlers.js +82 -37
  135. package/src/util/editor/transformation/create3DHandlers.js +187 -84
  136. package/src/util/editor/transformation/extrudeInteraction.js +20 -5
  137. package/src/util/editor/transformation/rotateInteraction.js +29 -16
  138. package/src/util/editor/transformation/scaleInteraction.js +31 -15
  139. package/src/util/editor/transformation/transformationHandler.js +23 -8
  140. package/src/util/editor/transformation/transformationTypes.js +8 -4
  141. package/src/util/editor/transformation/translateInteraction.js +86 -32
  142. package/src/util/editor/validateGeoemetry.js +3 -1
  143. package/src/util/exclusiveManager.js +6 -3
  144. package/src/util/extent.js +20 -10
  145. package/src/util/featureconverter/arcToCesium.js +46 -12
  146. package/src/util/featureconverter/circleToCesium.js +61 -27
  147. package/src/util/featureconverter/convert.js +85 -13
  148. package/src/util/featureconverter/extent3D.js +69 -28
  149. package/src/util/featureconverter/featureconverterHelper.js +232 -79
  150. package/src/util/featureconverter/lineStringToCesium.js +107 -35
  151. package/src/util/featureconverter/pointHelpers.js +117 -45
  152. package/src/util/featureconverter/pointToCesium.js +128 -31
  153. package/src/util/featureconverter/polygonToCesium.js +50 -16
  154. package/src/util/fetch.js +3 -1
  155. package/src/util/geometryHelpers.js +15 -10
  156. package/src/util/indexedCollection.js +7 -3
  157. package/src/util/isMobile.js +8 -2
  158. package/src/util/layerCollection.js +28 -12
  159. package/src/util/mapCollection.js +37 -18
  160. package/src/util/math.js +35 -19
  161. package/src/util/overrideCollection.js +57 -32
  162. package/src/util/projection.js +21 -5
  163. package/src/util/urlHelpers.js +5 -3
  164. package/src/util/viewpoint.js +66 -33
  165. package/src/vcsApp.js +133 -69
  166. package/src/vcsModule.js +3 -2
  167. package/src/vcsModuleHelpers.js +24 -9
  168. package/src/vcsObject.js +3 -2
  169. package/tests/data/dynamicPointCzml.json +24 -35
  170. package/tests/data/oblique/imageData/imagev34.json +56 -272
  171. package/tests/data/oblique/imageData/imagev35.json +272 -19
  172. package/tests/data/oblique/imageData/imagev35PerImageSize.json +299 -19
  173. package/tests/data/oblique/tiledImageData/12/2199/1342.json +11056 -1
  174. package/tests/data/oblique/tiledImageData/12/2199/1343.json +11236 -1
  175. package/tests/data/oblique/tiledImageData/12/2199/1344.json +11077 -1
  176. package/tests/data/oblique/tiledImageData/12/2200/1342.json +11036 -1
  177. package/tests/data/oblique/tiledImageData/12/2200/1343.json +11277 -1
  178. package/tests/data/oblique/tiledImageData/12/2200/1344.json +11131 -1
  179. package/tests/data/oblique/tiledImageData/12/2201/1342.json +10870 -1
  180. package/tests/data/oblique/tiledImageData/12/2201/1343.json +11492 -1
  181. package/tests/data/oblique/tiledImageData/12/2201/1344.json +10909 -1
  182. package/tests/data/oblique/tiledImageData/image.json +70 -1
  183. package/tests/data/terrain/layer.json +121 -130
  184. package/tests/data/testGeoJSON.json +4 -16
  185. package/tests/unit/helpers/cesiumHelpers.js +58 -33
  186. package/tests/unit/helpers/helpers.js +10 -2
  187. package/tests/unit/helpers/imageHelpers.js +8 -4
  188. package/tests/unit/helpers/obliqueData.js +39 -13
  189. package/tests/unit/helpers/obliqueHelpers.js +12 -9
  190. package/tests/unit/helpers/openlayersHelpers.js +4 -1
  191. package/tests/unit/helpers/terrain/terrainData.js +8 -7
@@ -4,9 +4,15 @@ import Feature from 'ol/Feature.js';
4
4
  import { v4 as uuidv4 } from 'uuid';
5
5
  import { check } from '@vcsuite/check';
6
6
  import { parseBoolean } from '@vcsuite/parsers';
7
- import Projection, { getDefaultProjection, mercatorProjection } from '../util/projection.js';
7
+ import Projection, {
8
+ getDefaultProjection,
9
+ mercatorProjection,
10
+ } from '../util/projection.js';
8
11
  import Layer, { vcsMetaVersion } from './layer.js';
9
- import VectorStyleItem, { defaultVectorStyle, vectorStyleSymbol } from '../style/vectorStyleItem.js';
12
+ import VectorStyleItem, {
13
+ defaultVectorStyle,
14
+ vectorStyleSymbol,
15
+ } from '../style/vectorStyleItem.js';
10
16
  import DeclarativeStyleItem from '../style/declarativeStyleItem.js';
11
17
  import writeStyle from '../style/writeStyle.js';
12
18
  import {
@@ -92,37 +98,49 @@ class VectorLayer extends FeatureLayer {
92
98
  * @readonly
93
99
  * @returns {string}
94
100
  */
95
- static get className() { return 'VectorLayer'; }
101
+ static get className() {
102
+ return 'VectorLayer';
103
+ }
96
104
 
97
105
  /**
98
106
  * @returns {symbol}
99
107
  * @readonly
100
108
  */
101
- static get alreadyTransformedToMercator() { return alreadyTransformedToMercator; }
109
+ static get alreadyTransformedToMercator() {
110
+ return alreadyTransformedToMercator;
111
+ }
102
112
 
103
113
  /**
104
114
  * @returns {symbol}
105
115
  * @readonly
106
116
  */
107
- static get alreadyTransformedToImage() { return alreadyTransformedToImage; }
117
+ static get alreadyTransformedToImage() {
118
+ return alreadyTransformedToImage;
119
+ }
108
120
 
109
121
  /**
110
122
  * @returns {symbol}
111
123
  * @readonly
112
124
  */
113
- static get obliqueGeometry() { return obliqueGeometry; }
125
+ static get obliqueGeometry() {
126
+ return obliqueGeometry;
127
+ }
114
128
 
115
129
  /**
116
130
  * @returns {symbol}
117
131
  * @readonly
118
132
  */
119
- static get doNotTransform() { return doNotTransform; }
133
+ static get doNotTransform() {
134
+ return doNotTransform;
135
+ }
120
136
 
121
137
  /**
122
138
  * @returns {symbol}
123
139
  * @readonly
124
140
  */
125
- static get originalFeatureSymbol() { return originalFeatureSymbol; }
141
+ static get originalFeatureSymbol() {
142
+ return originalFeatureSymbol;
143
+ }
126
144
 
127
145
  /**
128
146
  * @returns {VectorOptions}
@@ -161,21 +179,32 @@ class VectorLayer extends FeatureLayer {
161
179
  this.projection = new Projection(options.projection);
162
180
 
163
181
  /** @type {?number} */
164
- this.maxResolution = options.maxResolution != null ? options.maxResolution : defaultOptions.maxResolution;
182
+ this.maxResolution =
183
+ options.maxResolution != null
184
+ ? options.maxResolution
185
+ : defaultOptions.maxResolution;
165
186
 
166
187
  /** @type {?number} */
167
- this.minResolution = options.minResolution != null ? options.minResolution : defaultOptions.minResolution;
188
+ this.minResolution =
189
+ options.minResolution != null
190
+ ? options.minResolution
191
+ : defaultOptions.minResolution;
168
192
 
169
193
  /** @type {boolean} */
170
- this.dontUseTerrainForOblique =
171
- parseBoolean(options.dontUseTerrainForOblique, defaultOptions.dontUseTerrainForOblique);
194
+ this.dontUseTerrainForOblique = parseBoolean(
195
+ options.dontUseTerrainForOblique,
196
+ defaultOptions.dontUseTerrainForOblique,
197
+ );
172
198
 
173
199
  /** @type {import("@vcmap/core").VectorStyleItem} */
174
- this.highlightStyle = /** @type {undefined} */ (defaultOptions.highlightStyle);
200
+ this.highlightStyle = /** @type {undefined} */ (
201
+ defaultOptions.highlightStyle
202
+ );
175
203
  if (options.highlightStyle) {
176
- this.highlightStyle = options.highlightStyle instanceof VectorStyleItem ?
177
- options.highlightStyle :
178
- new VectorStyleItem(options.highlightStyle);
204
+ this.highlightStyle =
205
+ options.highlightStyle instanceof VectorStyleItem
206
+ ? options.highlightStyle
207
+ : new VectorStyleItem(options.highlightStyle);
179
208
  }
180
209
 
181
210
  /**
@@ -243,7 +272,9 @@ class VectorLayer extends FeatureLayer {
243
272
  * @type {boolean}
244
273
  * @api
245
274
  */
246
- get visibility() { return this._visibility; }
275
+ get visibility() {
276
+ return this._visibility;
277
+ }
247
278
 
248
279
  /**
249
280
  * @param {boolean} visible
@@ -260,10 +291,9 @@ class VectorLayer extends FeatureLayer {
260
291
  * @returns {Promise<void>}
261
292
  */
262
293
  initialize() {
263
- return super.initialize()
264
- .then(() => {
265
- this._trackStyleChanges();
266
- });
294
+ return super.initialize().then(() => {
295
+ this._trackStyleChanges();
296
+ });
267
297
  }
268
298
 
269
299
  /**
@@ -299,7 +329,8 @@ class VectorLayer extends FeatureLayer {
299
329
  * Sets the meta values based on a {@link VcsMeta} Object. Does not carry over the style
300
330
  * @param {VcsMeta} vcsMeta
301
331
  */
302
- setVcsMeta(vcsMeta) { // XXX what about the style?
332
+ setVcsMeta(vcsMeta) {
333
+ // XXX what about the style?
303
334
  this.vectorProperties.setVcsMeta(vcsMeta);
304
335
  if (vcsMeta.layerProperties) {
305
336
  Object.assign(this.properties, vcsMeta.layerProperties);
@@ -350,7 +381,10 @@ class VectorLayer extends FeatureLayer {
350
381
  * @returns {import("@vcmap/core").StyleItem}
351
382
  */
352
383
  getStyleOrDefaultStyle(styleOptions, defaultStyle) {
353
- return super.getStyleOrDefaultStyle(styleOptions, defaultStyle || defaultVectorStyle.clone());
384
+ return super.getStyleOrDefaultStyle(
385
+ styleOptions,
386
+ defaultStyle || defaultVectorStyle.clone(),
387
+ );
354
388
  }
355
389
 
356
390
  /**
@@ -391,13 +425,15 @@ class VectorLayer extends FeatureLayer {
391
425
  }
392
426
 
393
427
  const isDeclarative = this.style instanceof DeclarativeStyleItem;
394
- this._onStyleChangeRemover = this.style.styleChanged.addEventListener(() => {
395
- this.getFeatures().forEach((f) => {
396
- if (isDeclarative || !f[vectorStyleSymbol]) {
397
- f.changed();
398
- }
399
- });
400
- });
428
+ this._onStyleChangeRemover = this.style.styleChanged.addEventListener(
429
+ () => {
430
+ this.getFeatures().forEach((f) => {
431
+ if (isDeclarative || !f[vectorStyleSymbol]) {
432
+ f.changed();
433
+ }
434
+ });
435
+ },
436
+ );
401
437
  }
402
438
 
403
439
  /**
@@ -468,9 +504,13 @@ class VectorLayer extends FeatureLayer {
468
504
 
469
505
  return feature;
470
506
  })
471
- .filter(f => f);
472
- this.source.addFeatures(/** @type {Array<import("ol").Feature<import("ol/geom/Geometry").default>>} */ (toAdd));
473
- return features.map(f => f.getId());
507
+ .filter((f) => f);
508
+ this.source.addFeatures(
509
+ /** @type {Array<import("ol").Feature<import("ol/geom/Geometry").default>>} */ (
510
+ toAdd
511
+ ),
512
+ );
513
+ return features.map((f) => f.getId());
474
514
  }
475
515
 
476
516
  /**
@@ -502,8 +542,7 @@ class VectorLayer extends FeatureLayer {
502
542
  */
503
543
  getFeaturesById(ids) {
504
544
  check(ids, [[String, Number]]);
505
- return ids.map(id => this.getFeatureById(id))
506
- .filter(f => f != null);
545
+ return ids.map((id) => this.getFeatureById(id)).filter((f) => f != null);
507
546
  }
508
547
 
509
548
  /**
@@ -582,7 +621,9 @@ class VectorLayer extends FeatureLayer {
582
621
  config.minResolution = this.minResolution;
583
622
  }
584
623
 
585
- if (this.dontUseTerrainForOblique !== defaultOptions.dontUseTerrainForOblique) {
624
+ if (
625
+ this.dontUseTerrainForOblique !== defaultOptions.dontUseTerrainForOblique
626
+ ) {
586
627
  config.dontUseTerrainForOblique = this.dontUseTerrainForOblique;
587
628
  }
588
629