@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.
- package/README.md +9 -3
- package/build/postinstall.js +13 -2
- package/index.d.ts +155 -106
- package/package.json +9 -4
- package/src/category/category.js +71 -32
- package/src/category/categoryCollection.js +27 -18
- package/src/cesium/cesiumVcsCameraPrimitive.js +13 -5
- package/src/cesium/entity.js +3 -1
- package/src/cesium/wallpaperMaterial.js +4 -2
- package/src/classRegistry.js +11 -4
- package/src/featureProvider/abstractFeatureProvider.js +43 -22
- package/src/featureProvider/tileProviderFeatureProvider.js +11 -5
- package/src/featureProvider/wmsFeatureProvider.js +37 -15
- package/src/interaction/abstractInteraction.js +5 -1
- package/src/interaction/coordinateAtPixel.js +34 -12
- package/src/interaction/eventHandler.js +63 -23
- package/src/interaction/featureAtPixelInteraction.js +96 -32
- package/src/interaction/featureProviderInteraction.js +23 -8
- package/src/interaction/interactionChain.js +19 -9
- package/src/interaction/interactionType.js +23 -26
- package/src/layer/cesium/cesiumTilesetCesiumImpl.js +45 -15
- package/src/layer/cesium/clusterContext.js +10 -3
- package/src/layer/cesium/dataSourceCesiumImpl.js +13 -4
- package/src/layer/cesium/openStreetMapCesiumImpl.js +7 -3
- package/src/layer/cesium/rasterLayerCesiumImpl.js +6 -2
- package/src/layer/cesium/singleImageCesiumImpl.js +14 -3
- package/src/layer/cesium/terrainCesiumImpl.js +3 -2
- package/src/layer/cesium/tmsCesiumImpl.js +15 -3
- package/src/layer/cesium/vectorCesiumImpl.js +69 -25
- package/src/layer/cesium/vectorContext.js +25 -5
- package/src/layer/cesium/vectorRasterTileCesiumImpl.js +15 -5
- package/src/layer/cesium/vectorTileImageryProvider.js +51 -13
- package/src/layer/cesium/wmsCesiumImpl.js +15 -3
- package/src/layer/cesium/wmtsCesiumImpl.js +18 -6
- package/src/layer/cesium/x3dmHelper.js +4 -1
- package/src/layer/cesiumTilesetLayer.js +55 -26
- package/src/layer/czmlLayer.js +11 -5
- package/src/layer/dataSourceLayer.js +25 -17
- package/src/layer/featureLayer.js +33 -18
- package/src/layer/featureStoreLayer.js +161 -99
- package/src/layer/featureStoreLayerChanges.js +57 -17
- package/src/layer/featureVisibility.js +89 -59
- package/src/layer/geojsonHelpers.js +70 -29
- package/src/layer/geojsonLayer.js +17 -11
- package/src/layer/globalHider.js +14 -4
- package/src/layer/layer.js +77 -44
- package/src/layer/layerImplementation.js +12 -4
- package/src/layer/oblique/layerObliqueImpl.js +3 -1
- package/src/layer/oblique/obliqueHelpers.js +75 -30
- package/src/layer/oblique/vectorObliqueImpl.js +175 -69
- package/src/layer/openStreetMapLayer.js +34 -20
- package/src/layer/openlayers/layerOpenlayersImpl.js +37 -15
- package/src/layer/openlayers/openStreetMapOpenlayersImpl.js +3 -1
- package/src/layer/openlayers/rasterLayerOpenlayersImpl.js +3 -1
- package/src/layer/openlayers/singleImageOpenlayersImpl.js +3 -1
- package/src/layer/openlayers/tileDebugOpenlayersImpl.js +3 -1
- package/src/layer/openlayers/tmsOpenlayersImpl.js +6 -3
- package/src/layer/openlayers/vectorOpenlayersImpl.js +14 -4
- package/src/layer/openlayers/vectorTileOpenlayersImpl.js +12 -5
- package/src/layer/openlayers/wmsOpenlayersImpl.js +3 -1
- package/src/layer/openlayers/wmtsOpenlayersImpl.js +12 -5
- package/src/layer/pointCloudLayer.js +21 -10
- package/src/layer/rasterLayer.js +73 -22
- package/src/layer/singleImageLayer.js +10 -7
- package/src/layer/terrainHelpers.js +30 -19
- package/src/layer/terrainLayer.js +16 -7
- package/src/layer/tileLoadedHelper.js +9 -4
- package/src/layer/tileProvider/mvtTileProvider.js +10 -4
- package/src/layer/tileProvider/staticGeojsonTileProvider.js +10 -4
- package/src/layer/tileProvider/tileProvider.js +163 -87
- package/src/layer/tileProvider/urlTemplateTileProvider.js +10 -4
- package/src/layer/tmsLayer.js +7 -6
- package/src/layer/vectorHelpers.js +34 -25
- package/src/layer/vectorLayer.js +77 -36
- package/src/layer/vectorProperties.js +245 -74
- package/src/layer/vectorSymbols.js +3 -1
- package/src/layer/vectorTileLayer.js +121 -70
- package/src/layer/wfsLayer.js +19 -8
- package/src/layer/wmsHelpers.js +11 -6
- package/src/layer/wmsLayer.js +36 -14
- package/src/layer/wmtsLayer.js +35 -20
- package/src/map/baseOLMap.js +57 -31
- package/src/map/cameraLimiter.js +67 -18
- package/src/map/cesiumMap.js +307 -95
- package/src/map/obliqueMap.js +84 -34
- package/src/map/openlayersMap.js +40 -19
- package/src/map/vcsMap.js +21 -8
- package/src/oblique/helpers.js +212 -64
- package/src/oblique/obliqueCollection.js +111 -48
- package/src/oblique/obliqueDataSet.js +53 -21
- package/src/oblique/obliqueImage.js +50 -17
- package/src/oblique/obliqueImageMeta.js +7 -6
- package/src/oblique/obliqueProvider.js +75 -27
- package/src/oblique/obliqueView.js +18 -7
- package/src/oblique/obliqueViewDirection.js +3 -2
- package/src/oblique/parseImageJson.js +57 -23
- package/src/ol/feature.js +8 -3
- package/src/ol/geom/circle.js +12 -3
- package/src/ol/geom/geometryCollection.js +11 -4
- package/src/ol/render/canvas/canvasTileRenderer.js +11 -9
- package/src/overrideClassRegistry.js +13 -3
- package/src/style/arcStyle.js +129 -36
- package/src/style/arrowStyle.js +57 -22
- package/src/style/declarativeStyleItem.js +107 -62
- package/src/style/shapesCategory.js +8 -6
- package/src/style/styleFactory.js +4 -1
- package/src/style/styleHelpers.js +17 -8
- package/src/style/styleItem.js +28 -10
- package/src/style/vectorStyleItem.js +160 -74
- package/src/style/writeStyle.js +5 -7
- package/src/util/clipping/clippingObject.js +72 -38
- package/src/util/clipping/clippingObjectManager.js +53 -19
- package/src/util/clipping/clippingPlaneHelper.js +120 -53
- package/src/util/collection.js +12 -6
- package/src/util/editor/createFeatureSession.js +21 -6
- package/src/util/editor/editFeaturesSession.js +41 -15
- package/src/util/editor/editGeometrySession.js +55 -30
- package/src/util/editor/editorHelpers.js +114 -29
- package/src/util/editor/editorSessionHelpers.js +8 -3
- package/src/util/editor/interactions/createBBoxInteraction.js +11 -3
- package/src/util/editor/interactions/createCircleInteraction.js +7 -2
- package/src/util/editor/interactions/createLineStringInteraction.js +7 -2
- package/src/util/editor/interactions/createPolygonInteraction.js +7 -2
- package/src/util/editor/interactions/editFeaturesMouseOverInteraction.js +7 -5
- package/src/util/editor/interactions/editGeometryMouseOverInteraction.js +8 -3
- package/src/util/editor/interactions/ensureHandlerSelectionInteraction.js +4 -2
- package/src/util/editor/interactions/insertVertexInteraction.js +17 -6
- package/src/util/editor/interactions/mapInteractionController.js +31 -14
- package/src/util/editor/interactions/removeVertexInteraction.js +4 -1
- package/src/util/editor/interactions/selectFeatureMouseOverInteraction.js +19 -10
- package/src/util/editor/interactions/selectMultiFeatureInteraction.js +33 -20
- package/src/util/editor/interactions/selectSingleFeatureInteraction.js +14 -8
- package/src/util/editor/selectFeaturesSession.js +37 -21
- package/src/util/editor/transformation/create2DHandlers.js +82 -37
- package/src/util/editor/transformation/create3DHandlers.js +187 -84
- package/src/util/editor/transformation/extrudeInteraction.js +20 -5
- package/src/util/editor/transformation/rotateInteraction.js +29 -16
- package/src/util/editor/transformation/scaleInteraction.js +31 -15
- package/src/util/editor/transformation/transformationHandler.js +23 -8
- package/src/util/editor/transformation/transformationTypes.js +8 -4
- package/src/util/editor/transformation/translateInteraction.js +86 -32
- package/src/util/editor/validateGeoemetry.js +3 -1
- package/src/util/exclusiveManager.js +6 -3
- package/src/util/extent.js +20 -10
- package/src/util/featureconverter/arcToCesium.js +46 -12
- package/src/util/featureconverter/circleToCesium.js +61 -27
- package/src/util/featureconverter/convert.js +85 -13
- package/src/util/featureconverter/extent3D.js +69 -28
- package/src/util/featureconverter/featureconverterHelper.js +232 -79
- package/src/util/featureconverter/lineStringToCesium.js +107 -35
- package/src/util/featureconverter/pointHelpers.js +117 -45
- package/src/util/featureconverter/pointToCesium.js +128 -31
- package/src/util/featureconverter/polygonToCesium.js +50 -16
- package/src/util/fetch.js +3 -1
- package/src/util/geometryHelpers.js +15 -10
- package/src/util/indexedCollection.js +7 -3
- package/src/util/isMobile.js +8 -2
- package/src/util/layerCollection.js +28 -12
- package/src/util/mapCollection.js +37 -18
- package/src/util/math.js +35 -19
- package/src/util/overrideCollection.js +57 -32
- package/src/util/projection.js +21 -5
- package/src/util/urlHelpers.js +5 -3
- package/src/util/viewpoint.js +66 -33
- package/src/vcsApp.js +133 -69
- package/src/vcsModule.js +3 -2
- package/src/vcsModuleHelpers.js +24 -9
- package/src/vcsObject.js +3 -2
- package/tests/data/dynamicPointCzml.json +24 -35
- package/tests/data/oblique/imageData/imagev34.json +56 -272
- package/tests/data/oblique/imageData/imagev35.json +272 -19
- package/tests/data/oblique/imageData/imagev35PerImageSize.json +299 -19
- package/tests/data/oblique/tiledImageData/12/2199/1342.json +11056 -1
- package/tests/data/oblique/tiledImageData/12/2199/1343.json +11236 -1
- package/tests/data/oblique/tiledImageData/12/2199/1344.json +11077 -1
- package/tests/data/oblique/tiledImageData/12/2200/1342.json +11036 -1
- package/tests/data/oblique/tiledImageData/12/2200/1343.json +11277 -1
- package/tests/data/oblique/tiledImageData/12/2200/1344.json +11131 -1
- package/tests/data/oblique/tiledImageData/12/2201/1342.json +10870 -1
- package/tests/data/oblique/tiledImageData/12/2201/1343.json +11492 -1
- package/tests/data/oblique/tiledImageData/12/2201/1344.json +10909 -1
- package/tests/data/oblique/tiledImageData/image.json +70 -1
- package/tests/data/terrain/layer.json +121 -130
- package/tests/data/testGeoJSON.json +4 -16
- package/tests/unit/helpers/cesiumHelpers.js +58 -33
- package/tests/unit/helpers/helpers.js +10 -2
- package/tests/unit/helpers/imageHelpers.js +8 -4
- package/tests/unit/helpers/obliqueData.js +39 -13
- package/tests/unit/helpers/obliqueHelpers.js +12 -9
- package/tests/unit/helpers/openlayersHelpers.js +4 -1
- package/tests/unit/helpers/terrain/terrainData.js +8 -7
package/src/layer/vectorLayer.js
CHANGED
|
@@ -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, {
|
|
7
|
+
import Projection, {
|
|
8
|
+
getDefaultProjection,
|
|
9
|
+
mercatorProjection,
|
|
10
|
+
} from '../util/projection.js';
|
|
8
11
|
import Layer, { vcsMetaVersion } from './layer.js';
|
|
9
|
-
import VectorStyleItem, {
|
|
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() {
|
|
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() {
|
|
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() {
|
|
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() {
|
|
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() {
|
|
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() {
|
|
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 =
|
|
182
|
+
this.maxResolution =
|
|
183
|
+
options.maxResolution != null
|
|
184
|
+
? options.maxResolution
|
|
185
|
+
: defaultOptions.maxResolution;
|
|
165
186
|
|
|
166
187
|
/** @type {?number} */
|
|
167
|
-
this.minResolution =
|
|
188
|
+
this.minResolution =
|
|
189
|
+
options.minResolution != null
|
|
190
|
+
? options.minResolution
|
|
191
|
+
: defaultOptions.minResolution;
|
|
168
192
|
|
|
169
193
|
/** @type {boolean} */
|
|
170
|
-
this.dontUseTerrainForOblique =
|
|
171
|
-
|
|
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} */ (
|
|
200
|
+
this.highlightStyle = /** @type {undefined} */ (
|
|
201
|
+
defaultOptions.highlightStyle
|
|
202
|
+
);
|
|
175
203
|
if (options.highlightStyle) {
|
|
176
|
-
this.highlightStyle =
|
|
177
|
-
options.highlightStyle
|
|
178
|
-
|
|
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() {
|
|
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
|
-
.
|
|
265
|
-
|
|
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) {
|
|
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(
|
|
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
|
-
|
|
396
|
-
|
|
397
|
-
f
|
|
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(
|
|
473
|
-
|
|
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 (
|
|
624
|
+
if (
|
|
625
|
+
this.dontUseTerrainForOblique !== defaultOptions.dontUseTerrainForOblique
|
|
626
|
+
) {
|
|
586
627
|
config.dontUseTerrainForOblique = this.dontUseTerrainForOblique;
|
|
587
628
|
}
|
|
588
629
|
|