@vcmap/core 6.0.7 → 6.1.0-rc.2
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/dist/cesium.d.ts +3 -0
- package/dist/index.d.ts +16 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/ol.d.ts +8 -1
- package/dist/src/featureProvider/featureProviderSymbols.d.ts +5 -0
- package/dist/src/featureProvider/featureProviderSymbols.js +5 -1
- package/dist/src/featureProvider/featureProviderSymbols.js.map +1 -1
- package/dist/src/interaction/featureAtPixelInteraction.js +58 -62
- package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
- package/dist/src/interaction/featureProviderInteraction.js +25 -13
- package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
- package/dist/src/layer/cesium/sourceVectorContextSync.d.ts +27 -0
- package/dist/src/layer/cesium/sourceVectorContextSync.js +94 -0
- package/dist/src/layer/cesium/sourceVectorContextSync.js.map +1 -0
- package/dist/src/layer/cesium/vectorCesiumImpl.d.ts +4 -27
- package/dist/src/layer/cesium/vectorCesiumImpl.js +15 -107
- package/dist/src/layer/cesium/vectorCesiumImpl.js.map +1 -1
- package/dist/src/layer/cesium/vectorContext.d.ts +12 -1
- package/dist/src/layer/cesium/vectorContext.js +6 -0
- package/dist/src/layer/cesium/vectorContext.js.map +1 -1
- package/dist/src/layer/layerSymbols.js +1 -1
- package/dist/src/layer/layerSymbols.js.map +1 -1
- package/dist/src/layer/oblique/sourceObliqueSync.d.ts +18 -0
- package/dist/src/layer/oblique/sourceObliqueSync.js +319 -0
- package/dist/src/layer/oblique/sourceObliqueSync.js.map +1 -0
- package/dist/src/layer/oblique/vectorObliqueImpl.d.ts +2 -40
- package/dist/src/layer/oblique/vectorObliqueImpl.js +8 -283
- package/dist/src/layer/oblique/vectorObliqueImpl.js.map +1 -1
- package/dist/src/layer/vectorLayer.d.ts +10 -1
- package/dist/src/layer/vectorLayer.js +23 -1
- package/dist/src/layer/vectorLayer.js.map +1 -1
- package/dist/src/map/baseOLMap.js +8 -1
- package/dist/src/map/baseOLMap.js.map +1 -1
- package/dist/src/map/cesiumMap.d.ts +2 -0
- package/dist/src/map/cesiumMap.js +26 -1
- package/dist/src/map/cesiumMap.js.map +1 -1
- package/dist/src/map/vcsMap.d.ts +24 -12
- package/dist/src/map/vcsMap.js +92 -38
- package/dist/src/map/vcsMap.js.map +1 -1
- package/dist/src/ol/source/ClusterEnhancedVectorSource.d.ts +6 -4
- package/dist/src/ol/source/ClusterEnhancedVectorSource.js +4 -9
- package/dist/src/ol/source/ClusterEnhancedVectorSource.js.map +1 -1
- package/dist/src/ol/source/VcsCluster.d.ts +10 -10
- package/dist/src/ol/source/VcsCluster.js +23 -7
- package/dist/src/ol/source/VcsCluster.js.map +1 -1
- package/dist/src/util/clipping/clippingPolygonHelper.d.ts +7 -0
- package/dist/src/util/clipping/clippingPolygonHelper.js +53 -0
- package/dist/src/util/clipping/clippingPolygonHelper.js.map +1 -0
- package/dist/src/util/clipping/clippingPolygonObject.d.ts +59 -0
- package/dist/src/util/clipping/clippingPolygonObject.js +158 -0
- package/dist/src/util/clipping/clippingPolygonObject.js.map +1 -0
- package/dist/src/util/clipping/clippingPolygonObjectCollection.d.ts +18 -0
- package/dist/src/util/clipping/clippingPolygonObjectCollection.js +167 -0
- package/dist/src/util/clipping/clippingPolygonObjectCollection.js.map +1 -0
- package/dist/src/util/layerCollection.d.ts +11 -1
- package/dist/src/util/layerCollection.js +67 -12
- package/dist/src/util/layerCollection.js.map +1 -1
- package/dist/src/util/mapCollection.d.ts +16 -1
- package/dist/src/util/mapCollection.js +37 -3
- package/dist/src/util/mapCollection.js.map +1 -1
- package/dist/src/util/renderScreenshot.d.ts +9 -0
- package/dist/src/util/renderScreenshot.js +162 -0
- package/dist/src/util/renderScreenshot.js.map +1 -0
- package/dist/src/util/rotation.d.ts +30 -0
- package/dist/src/util/rotation.js +145 -0
- package/dist/src/util/rotation.js.map +1 -0
- package/dist/src/util/vcsTemplate.d.ts +7 -0
- package/dist/src/util/vcsTemplate.js +248 -0
- package/dist/src/util/vcsTemplate.js.map +1 -0
- package/dist/src/vcsApp.d.ts +7 -0
- package/dist/src/vcsApp.js +29 -0
- package/dist/src/vcsApp.js.map +1 -1
- package/dist/src/vcsModule.d.ts +6 -2
- package/dist/src/vcsModule.js.map +1 -1
- package/dist/src/vectorCluster/vectorClusterCesiumContext.d.ts +18 -0
- package/dist/src/{layer/cesium/clusterContext.js → vectorCluster/vectorClusterCesiumContext.js} +28 -42
- package/dist/src/vectorCluster/vectorClusterCesiumContext.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterGroup.d.ts +96 -0
- package/dist/src/vectorCluster/vectorClusterGroup.js +320 -0
- package/dist/src/vectorCluster/vectorClusterGroup.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterGroupCesiumImpl.d.ts +20 -0
- package/dist/src/vectorCluster/vectorClusterGroupCesiumImpl.js +115 -0
- package/dist/src/vectorCluster/vectorClusterGroupCesiumImpl.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterGroupCollection.d.ts +19 -0
- package/dist/src/vectorCluster/vectorClusterGroupCollection.js +37 -0
- package/dist/src/vectorCluster/vectorClusterGroupCollection.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterGroupImpl.d.ts +31 -0
- package/dist/src/vectorCluster/vectorClusterGroupImpl.js +76 -0
- package/dist/src/vectorCluster/vectorClusterGroupImpl.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterGroupObliqueImpl.d.ts +17 -0
- package/dist/src/vectorCluster/vectorClusterGroupObliqueImpl.js +62 -0
- package/dist/src/vectorCluster/vectorClusterGroupObliqueImpl.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterGroupOpenlayersImpl.d.ts +17 -0
- package/dist/src/vectorCluster/vectorClusterGroupOpenlayersImpl.js +62 -0
- package/dist/src/vectorCluster/vectorClusterGroupOpenlayersImpl.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterStyleItem.d.ts +110 -0
- package/dist/src/vectorCluster/vectorClusterStyleItem.js +374 -0
- package/dist/src/vectorCluster/vectorClusterStyleItem.js.map +1 -0
- package/dist/src/vectorCluster/vectorClusterSymbols.d.ts +1 -0
- package/dist/src/vectorCluster/vectorClusterSymbols.js +3 -0
- package/dist/src/vectorCluster/vectorClusterSymbols.js.map +1 -0
- package/index.ts +42 -1
- package/package.json +3 -1
- package/src/cesium/cesium.d.ts +3 -0
- package/src/featureProvider/featureProviderSymbols.ts +6 -1
- package/src/interaction/featureAtPixelInteraction.ts +109 -84
- package/src/interaction/featureProviderInteraction.ts +42 -28
- package/src/layer/cesium/sourceVectorContextSync.ts +134 -0
- package/src/layer/cesium/vcsTile/vcsDebugTile.ts +1 -1
- package/src/layer/cesium/vcsTile/vcsVectorTile.ts +1 -1
- package/src/layer/cesium/vectorCesiumImpl.ts +30 -144
- package/src/layer/cesium/vectorContext.ts +17 -1
- package/src/layer/layerSymbols.ts +1 -1
- package/src/layer/oblique/sourceObliqueSync.ts +436 -0
- package/src/layer/oblique/vectorObliqueImpl.ts +11 -397
- package/src/layer/vectorLayer.ts +35 -2
- package/src/map/baseOLMap.ts +8 -1
- package/src/map/cesiumMap.ts +36 -3
- package/src/map/vcsMap.ts +121 -47
- package/src/ol/ol.d.ts +8 -1
- package/src/ol/source/{ClusterEnhancedVectorSource.js → ClusterEnhancedVectorSource.ts} +7 -10
- package/src/ol/source/VcsCluster.ts +58 -0
- package/src/util/clipping/clippingPolygonHelper.ts +86 -0
- package/src/util/clipping/clippingPolygonObject.ts +223 -0
- package/src/util/clipping/clippingPolygonObjectCollection.ts +249 -0
- package/src/util/layerCollection.ts +90 -12
- package/src/util/mapCollection.ts +53 -2
- package/src/util/renderScreenshot.ts +193 -0
- package/src/util/rotation.ts +215 -0
- package/src/util/vcsTemplate.ts +373 -0
- package/src/vcsApp.ts +65 -0
- package/src/vcsModule.ts +6 -2
- package/src/vectorCluster/vectorClusterCesiumContext.ts +123 -0
- package/src/vectorCluster/vectorClusterGroup.ts +463 -0
- package/src/vectorCluster/vectorClusterGroupCesiumImpl.ts +176 -0
- package/src/vectorCluster/vectorClusterGroupCollection.ts +43 -0
- package/src/vectorCluster/vectorClusterGroupImpl.ts +107 -0
- package/src/vectorCluster/vectorClusterGroupObliqueImpl.ts +84 -0
- package/src/vectorCluster/vectorClusterGroupOpenlayersImpl.ts +81 -0
- package/src/vectorCluster/vectorClusterStyleItem.ts +490 -0
- package/src/vectorCluster/vectorClusterSymbols.ts +2 -0
- package/dist/src/layer/cesium/clusterContext.d.ts +0 -20
- package/dist/src/layer/cesium/clusterContext.js.map +0 -1
- package/src/layer/cesium/clusterContext.ts +0 -140
- package/src/ol/source/VcsCluster.js +0 -37
|
@@ -1,26 +1,42 @@
|
|
|
1
1
|
import Cluster from 'ol/source/Cluster.js';
|
|
2
|
+
import { vectorClusterGroupName } from '../../vectorCluster/vectorClusterSymbols.js';
|
|
3
|
+
import { hidden } from '../../layer/featureVisibility.js';
|
|
2
4
|
/**
|
|
3
5
|
* @class
|
|
4
6
|
* @extends {import("ol/source/Cluster").default}
|
|
5
7
|
* @memberOf ol
|
|
6
8
|
*/
|
|
7
9
|
class VcsCluster extends Cluster {
|
|
8
|
-
|
|
10
|
+
_name;
|
|
11
|
+
_paused = false;
|
|
12
|
+
constructor(props, _name) {
|
|
13
|
+
props.geometryFunction =
|
|
14
|
+
props.geometryFunction ??
|
|
15
|
+
((feature) => {
|
|
16
|
+
if (feature[hidden]) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return feature.getGeometry();
|
|
20
|
+
});
|
|
9
21
|
super(props);
|
|
22
|
+
this._name = _name;
|
|
10
23
|
/**
|
|
11
24
|
* @type {boolean}
|
|
12
25
|
*/
|
|
13
26
|
this._paused = false;
|
|
14
27
|
}
|
|
15
|
-
|
|
16
|
-
|
|
28
|
+
addFeatures(features) {
|
|
29
|
+
features.forEach((f) => {
|
|
30
|
+
f[vectorClusterGroupName] = this._name;
|
|
31
|
+
});
|
|
32
|
+
super.addFeatures(features);
|
|
17
33
|
}
|
|
18
|
-
|
|
19
|
-
this._paused = false;
|
|
20
|
-
}
|
|
21
|
-
isPaused() {
|
|
34
|
+
get paused() {
|
|
22
35
|
return this._paused;
|
|
23
36
|
}
|
|
37
|
+
set paused(pause) {
|
|
38
|
+
this._paused = pause;
|
|
39
|
+
}
|
|
24
40
|
refresh() {
|
|
25
41
|
if (this._paused) {
|
|
26
42
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VcsCluster.js","sourceRoot":"","sources":["../../../../src/ol/source/VcsCluster.
|
|
1
|
+
{"version":3,"file":"VcsCluster.js","sourceRoot":"","sources":["../../../../src/ol/source/VcsCluster.ts"],"names":[],"mappings":"AAAA,OAAO,OAAyB,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAW,SAAQ,OAAgB;IAK7B;IAJF,OAAO,GAAG,KAAK,CAAC;IAExB,YACE,KAAuB,EACf,KAAa;QAErB,KAAK,CAAC,gBAAgB;YACpB,KAAK,CAAC,gBAAgB;gBACtB,CAAC,CAAC,OAAgB,EAAgB,EAAE;oBAClC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBACpB,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,OAAO,OAAO,CAAC,WAAW,EAAW,CAAC;gBACxC,CAAC,CAAC,CAAC;QAEL,KAAK,CAAC,KAAK,CAAC,CAAC;QAXL,UAAK,GAAL,KAAK,CAAQ;QAYrB;;WAEG;QACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,QAAmB;QAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,CAAC,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,CAAC,KAAc;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Cesium3DTileset, ClippingPolygon, Globe } from '@vcmap-cesium/engine';
|
|
2
|
+
import type CesiumMap from '../../map/cesiumMap.js';
|
|
3
|
+
export declare function getTargetTilesets(map: CesiumMap, layerNames?: string[] | 'all'): Cesium3DTileset[];
|
|
4
|
+
export declare function addClippingPolygon(clippee: Globe | Cesium3DTileset, polygon: ClippingPolygon | undefined): void;
|
|
5
|
+
export declare function removeClippingPolygon(clippee: Globe | Cesium3DTileset, polygon: ClippingPolygon | undefined): void;
|
|
6
|
+
export declare function addClippingPolygonObjectToMap(map: CesiumMap, polygon: ClippingPolygon | undefined, terrain: boolean, layerNames: string[] | 'all'): void;
|
|
7
|
+
export declare function removeClippingPolygonFromMap(map: CesiumMap, polygon: ClippingPolygon | undefined, terrain: boolean, layerNames: string[] | 'all'): void;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Cesium3DTileset, ClippingPolygonCollection, } from '@vcmap-cesium/engine';
|
|
2
|
+
import { vcsLayerName } from '../../layer/layerSymbols.js';
|
|
3
|
+
export function getTargetTilesets(map, layerNames = 'all') {
|
|
4
|
+
const tilesets = map
|
|
5
|
+
.getVisualizations()
|
|
6
|
+
.filter((v) => v instanceof Cesium3DTileset);
|
|
7
|
+
if (Array.isArray(layerNames)) {
|
|
8
|
+
return tilesets.filter((v) => layerNames.includes(v[vcsLayerName]));
|
|
9
|
+
}
|
|
10
|
+
return tilesets;
|
|
11
|
+
}
|
|
12
|
+
export function addClippingPolygon(clippee, polygon) {
|
|
13
|
+
if (polygon) {
|
|
14
|
+
if (clippee.clippingPolygons === undefined) {
|
|
15
|
+
clippee.clippingPolygons = new ClippingPolygonCollection();
|
|
16
|
+
}
|
|
17
|
+
if (!clippee.clippingPolygons.contains(polygon)) {
|
|
18
|
+
clippee.clippingPolygons.add(polygon);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function removeClippingPolygon(clippee, polygon) {
|
|
23
|
+
if (polygon &&
|
|
24
|
+
clippee.clippingPolygons &&
|
|
25
|
+
clippee.clippingPolygons.contains(polygon)) {
|
|
26
|
+
clippee.clippingPolygons.remove(polygon);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function addClippingPolygonObjectToMap(map, polygon, terrain, layerNames) {
|
|
30
|
+
if (terrain) {
|
|
31
|
+
const globe = map.getScene()?.globe;
|
|
32
|
+
if (globe) {
|
|
33
|
+
addClippingPolygon(globe, polygon);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const tilesets = getTargetTilesets(map, layerNames);
|
|
37
|
+
tilesets.forEach((tileset) => {
|
|
38
|
+
addClippingPolygon(tileset, polygon);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export function removeClippingPolygonFromMap(map, polygon, terrain, layerNames) {
|
|
42
|
+
if (terrain) {
|
|
43
|
+
const globe = map.getScene()?.globe;
|
|
44
|
+
if (globe) {
|
|
45
|
+
removeClippingPolygon(globe, polygon);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const tilesets = getTargetTilesets(map, layerNames);
|
|
49
|
+
tilesets.forEach((tileset) => {
|
|
50
|
+
removeClippingPolygon(tileset, polygon);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=clippingPolygonHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clippingPolygonHelper.js","sourceRoot":"","sources":["../../../../src/util/clipping/clippingPolygonHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,yBAAyB,GAE1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,UAAU,iBAAiB,CAC/B,GAAc,EACd,aAA+B,KAAK;IAEpC,MAAM,QAAQ,GAAG,GAAG;SACjB,iBAAiB,EAAE;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,eAAe,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAgC,EAChC,OAAoC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,CAAC,gBAAgB,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAgC,EAChC,OAAoC;IAEpC,IACE,OAAO;QACP,OAAO,CAAC,gBAAgB;QACxB,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1C,CAAC;QACD,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,GAAc,EACd,OAAoC,EACpC,OAAgB,EAChB,UAA4B;IAE5B,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,GAAc,EACd,OAAoC,EACpC,OAAgB,EAChB,UAA4B;IAE5B,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Coordinate } from 'ol/coordinate.js';
|
|
2
|
+
import { Feature } from 'ol';
|
|
3
|
+
import { Polygon } from 'ol/geom.js';
|
|
4
|
+
import { ClippingPolygon } from '@vcmap-cesium/engine';
|
|
5
|
+
import VcsObject, { VcsObjectOptions } from '../../vcsObject.js';
|
|
6
|
+
import VcsEvent from '../../vcsEvent.js';
|
|
7
|
+
export declare enum ClippingPolygonObjectState {
|
|
8
|
+
INACTIVE = 1,
|
|
9
|
+
ACTIVE = 2
|
|
10
|
+
}
|
|
11
|
+
export type ClippingPolygonObjectOptions = VcsObjectOptions & {
|
|
12
|
+
layerNames?: string[] | 'all';
|
|
13
|
+
terrain?: boolean;
|
|
14
|
+
activeOnStartup?: boolean;
|
|
15
|
+
coordinates: Array<Coordinate>;
|
|
16
|
+
};
|
|
17
|
+
declare class ClippingPolygonObject extends VcsObject {
|
|
18
|
+
static get className(): string;
|
|
19
|
+
static getDefaultOptions(): ClippingPolygonObjectOptions;
|
|
20
|
+
static fromFeature(feature: Feature<Polygon>): ClippingPolygonObject | null;
|
|
21
|
+
static fromGeometry(geometry: Polygon): ClippingPolygonObject;
|
|
22
|
+
activeOnStartup: boolean;
|
|
23
|
+
private _state;
|
|
24
|
+
stateChanged: VcsEvent<ClippingPolygonObjectState>;
|
|
25
|
+
private _layerNames;
|
|
26
|
+
private _terrain;
|
|
27
|
+
private _coordinates;
|
|
28
|
+
private _clippingPolygon;
|
|
29
|
+
clippingPolygonChanged: VcsEvent<{
|
|
30
|
+
newValue: ClippingPolygon;
|
|
31
|
+
oldValue: ClippingPolygon | undefined;
|
|
32
|
+
}>;
|
|
33
|
+
layersChanged: VcsEvent<{
|
|
34
|
+
newValue: string[] | "all";
|
|
35
|
+
oldValue: string[] | "all";
|
|
36
|
+
}>;
|
|
37
|
+
terrainChanged: VcsEvent<boolean>;
|
|
38
|
+
constructor(options: ClippingPolygonObjectOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Whether the clipping polygon object is active or not
|
|
41
|
+
*/
|
|
42
|
+
get active(): boolean;
|
|
43
|
+
get layerNames(): string[] | 'all';
|
|
44
|
+
get terrain(): boolean;
|
|
45
|
+
set terrain(terrain: boolean);
|
|
46
|
+
get clippingPolygon(): ClippingPolygon | undefined;
|
|
47
|
+
get coordinates(): readonly Readonly<Coordinate>[];
|
|
48
|
+
/**
|
|
49
|
+
* Set polygon coordinates from an array of geographic wgs84 coordinates
|
|
50
|
+
* @param coordinates
|
|
51
|
+
*/
|
|
52
|
+
setCoordinates(coordinates: Coordinate[]): void;
|
|
53
|
+
setLayerNames(layerNames: string[] | 'all'): void;
|
|
54
|
+
activate(): void;
|
|
55
|
+
deactivate(): void;
|
|
56
|
+
toJSON(): ClippingPolygonObjectOptions;
|
|
57
|
+
destroy(): void;
|
|
58
|
+
}
|
|
59
|
+
export default ClippingPolygonObject;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import deepEqual from 'fast-deep-equal';
|
|
2
|
+
import { Polygon } from 'ol/geom.js';
|
|
3
|
+
import { check, oneOf } from '@vcsuite/check';
|
|
4
|
+
import { parseBoolean } from '@vcsuite/parsers';
|
|
5
|
+
import { getLogger } from '@vcsuite/logger';
|
|
6
|
+
import { Cartesian3, ClippingPolygon } from '@vcmap-cesium/engine';
|
|
7
|
+
import VcsObject from '../../vcsObject.js';
|
|
8
|
+
import VcsEvent from '../../vcsEvent.js';
|
|
9
|
+
export var ClippingPolygonObjectState;
|
|
10
|
+
(function (ClippingPolygonObjectState) {
|
|
11
|
+
ClippingPolygonObjectState[ClippingPolygonObjectState["INACTIVE"] = 1] = "INACTIVE";
|
|
12
|
+
ClippingPolygonObjectState[ClippingPolygonObjectState["ACTIVE"] = 2] = "ACTIVE";
|
|
13
|
+
})(ClippingPolygonObjectState || (ClippingPolygonObjectState = {}));
|
|
14
|
+
function getLayerNamesClone(layerNames) {
|
|
15
|
+
return Array.isArray(layerNames) ? layerNames.slice() : layerNames;
|
|
16
|
+
}
|
|
17
|
+
class ClippingPolygonObject extends VcsObject {
|
|
18
|
+
static get className() {
|
|
19
|
+
return 'ClippingPolygonObject';
|
|
20
|
+
}
|
|
21
|
+
static getDefaultOptions() {
|
|
22
|
+
return {
|
|
23
|
+
activeOnStartup: false,
|
|
24
|
+
layerNames: 'all',
|
|
25
|
+
terrain: false,
|
|
26
|
+
coordinates: [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
static fromFeature(feature) {
|
|
30
|
+
const geometry = feature.getGeometry();
|
|
31
|
+
if (geometry instanceof Polygon) {
|
|
32
|
+
return ClippingPolygonObject.fromGeometry(geometry);
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
static fromGeometry(geometry) {
|
|
37
|
+
check(geometry, Polygon);
|
|
38
|
+
const ring = geometry.getLinearRing(0);
|
|
39
|
+
const coordinates = ring.getCoordinates();
|
|
40
|
+
return new ClippingPolygonObject({ coordinates });
|
|
41
|
+
}
|
|
42
|
+
activeOnStartup;
|
|
43
|
+
_state;
|
|
44
|
+
stateChanged = new VcsEvent();
|
|
45
|
+
_layerNames;
|
|
46
|
+
_terrain;
|
|
47
|
+
_coordinates = [];
|
|
48
|
+
_clippingPolygon = undefined;
|
|
49
|
+
clippingPolygonChanged = new VcsEvent();
|
|
50
|
+
layersChanged = new VcsEvent();
|
|
51
|
+
terrainChanged = new VcsEvent();
|
|
52
|
+
constructor(options) {
|
|
53
|
+
super(options);
|
|
54
|
+
const defaultOptions = ClippingPolygonObject.getDefaultOptions();
|
|
55
|
+
this.activeOnStartup = parseBoolean(options.activeOnStartup, defaultOptions.activeOnStartup);
|
|
56
|
+
this._state = ClippingPolygonObjectState.INACTIVE;
|
|
57
|
+
this._layerNames = options.layerNames || defaultOptions.layerNames;
|
|
58
|
+
this._terrain = parseBoolean(options.terrain, defaultOptions.terrain);
|
|
59
|
+
this.setCoordinates(options.coordinates || defaultOptions.coordinates);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Whether the clipping polygon object is active or not
|
|
63
|
+
*/
|
|
64
|
+
get active() {
|
|
65
|
+
return this._state === ClippingPolygonObjectState.ACTIVE;
|
|
66
|
+
}
|
|
67
|
+
get layerNames() {
|
|
68
|
+
return this._layerNames;
|
|
69
|
+
}
|
|
70
|
+
get terrain() {
|
|
71
|
+
return this._terrain;
|
|
72
|
+
}
|
|
73
|
+
set terrain(terrain) {
|
|
74
|
+
check(terrain, Boolean);
|
|
75
|
+
if (this._terrain !== terrain) {
|
|
76
|
+
this._terrain = terrain;
|
|
77
|
+
this.terrainChanged.raiseEvent(this._terrain);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
get clippingPolygon() {
|
|
81
|
+
return this._clippingPolygon;
|
|
82
|
+
}
|
|
83
|
+
get coordinates() {
|
|
84
|
+
return this._coordinates;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Set polygon coordinates from an array of geographic wgs84 coordinates
|
|
88
|
+
* @param coordinates
|
|
89
|
+
*/
|
|
90
|
+
setCoordinates(coordinates) {
|
|
91
|
+
check(coordinates, [[Number]]);
|
|
92
|
+
if (coordinates.length < 3) {
|
|
93
|
+
getLogger('ClippingPolygonObject').error('At least 3 coordinates are required!');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (deepEqual(this._coordinates, coordinates)) {
|
|
97
|
+
getLogger('ClippingPolygonObject').error('The provided coordinates are already set!');
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const positions = coordinates.map((c) => {
|
|
101
|
+
return Cartesian3.fromDegrees(c[0], c[1], c[2]);
|
|
102
|
+
});
|
|
103
|
+
this._coordinates = structuredClone(coordinates);
|
|
104
|
+
const oldValue = this._clippingPolygon;
|
|
105
|
+
const newValue = new ClippingPolygon({ positions });
|
|
106
|
+
this._clippingPolygon = newValue;
|
|
107
|
+
this.clippingPolygonChanged.raiseEvent({ oldValue, newValue });
|
|
108
|
+
}
|
|
109
|
+
setLayerNames(layerNames) {
|
|
110
|
+
check(layerNames, oneOf([String], 'all'));
|
|
111
|
+
if (!deepEqual(this._layerNames, layerNames)) {
|
|
112
|
+
const oldValue = this._layerNames;
|
|
113
|
+
this._layerNames = getLayerNamesClone(layerNames);
|
|
114
|
+
this.layersChanged.raiseEvent({
|
|
115
|
+
newValue: layerNames,
|
|
116
|
+
oldValue,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
activate() {
|
|
121
|
+
if (this._state === ClippingPolygonObjectState.INACTIVE) {
|
|
122
|
+
this._state = ClippingPolygonObjectState.ACTIVE;
|
|
123
|
+
this.stateChanged.raiseEvent(this._state);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
deactivate() {
|
|
127
|
+
if (this._state === ClippingPolygonObjectState.ACTIVE) {
|
|
128
|
+
this._state = ClippingPolygonObjectState.INACTIVE;
|
|
129
|
+
this.stateChanged.raiseEvent(this._state);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
toJSON() {
|
|
133
|
+
const config = {
|
|
134
|
+
...super.toJSON(),
|
|
135
|
+
coordinates: structuredClone(this._coordinates),
|
|
136
|
+
};
|
|
137
|
+
const defaultOptions = ClippingPolygonObject.getDefaultOptions();
|
|
138
|
+
if (!deepEqual(this._layerNames, defaultOptions.layerNames)) {
|
|
139
|
+
config.layerNames = getLayerNamesClone(this._layerNames);
|
|
140
|
+
}
|
|
141
|
+
if (this._terrain !== defaultOptions.terrain) {
|
|
142
|
+
config.terrain = this._terrain;
|
|
143
|
+
}
|
|
144
|
+
if (this.activeOnStartup !== defaultOptions.activeOnStartup) {
|
|
145
|
+
config.activeOnStartup = this.activeOnStartup;
|
|
146
|
+
}
|
|
147
|
+
return config;
|
|
148
|
+
}
|
|
149
|
+
destroy() {
|
|
150
|
+
this.stateChanged.destroy();
|
|
151
|
+
this.clippingPolygonChanged.destroy();
|
|
152
|
+
this.layersChanged.destroy();
|
|
153
|
+
this.terrainChanged.destroy();
|
|
154
|
+
super.destroy();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export default ClippingPolygonObject;
|
|
158
|
+
//# sourceMappingURL=clippingPolygonObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clippingPolygonObject.js","sourceRoot":"","sources":["../../../../src/util/clipping/clippingPolygonObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Collection from '../collection.js';
|
|
2
|
+
import VcsEvent from '../../vcsEvent.js';
|
|
3
|
+
import type VcsApp from '../../vcsApp.js';
|
|
4
|
+
import type ClippingPolygonObject from './clippingPolygonObject.js';
|
|
5
|
+
import CesiumMap from '../../map/cesiumMap.js';
|
|
6
|
+
declare class ClippingPolygonObjectCollection extends Collection<ClippingPolygonObject> {
|
|
7
|
+
private _app;
|
|
8
|
+
private _listener;
|
|
9
|
+
private _mapListener;
|
|
10
|
+
private _itemListener;
|
|
11
|
+
stateChanged: VcsEvent<ClippingPolygonObject>;
|
|
12
|
+
constructor(app: VcsApp);
|
|
13
|
+
_getActiveCesiumMaps(): CesiumMap[];
|
|
14
|
+
_setMapListener(map: CesiumMap): () => void;
|
|
15
|
+
_setItemListener(item: ClippingPolygonObject): () => void;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
18
|
+
export default ClippingPolygonObjectCollection;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { Cesium3DTileset } from '@vcmap-cesium/engine';
|
|
2
|
+
import Collection from '../collection.js';
|
|
3
|
+
import VcsEvent from '../../vcsEvent.js';
|
|
4
|
+
import { addClippingPolygon, addClippingPolygonObjectToMap, getTargetTilesets, removeClippingPolygon, removeClippingPolygonFromMap, } from './clippingPolygonHelper.js';
|
|
5
|
+
import { vcsLayerName } from '../../layer/layerSymbols.js';
|
|
6
|
+
import CesiumMap from '../../map/cesiumMap.js';
|
|
7
|
+
import MapState from '../../map/mapState.js';
|
|
8
|
+
class ClippingPolygonObjectCollection extends Collection {
|
|
9
|
+
_app;
|
|
10
|
+
_listener;
|
|
11
|
+
_mapListener = new Map();
|
|
12
|
+
_itemListener = new Map();
|
|
13
|
+
stateChanged = new VcsEvent();
|
|
14
|
+
constructor(app) {
|
|
15
|
+
super();
|
|
16
|
+
this._app = app;
|
|
17
|
+
this._listener = [
|
|
18
|
+
this.added.addEventListener((item) => {
|
|
19
|
+
this._itemListener.set(item.name, this._setItemListener(item));
|
|
20
|
+
if (item.activeOnStartup) {
|
|
21
|
+
item.activate();
|
|
22
|
+
}
|
|
23
|
+
}),
|
|
24
|
+
this.removed.addEventListener((item) => {
|
|
25
|
+
if (item.active) {
|
|
26
|
+
const maps = this._getActiveCesiumMaps();
|
|
27
|
+
maps.forEach((map) => {
|
|
28
|
+
removeClippingPolygonFromMap(map, item.clippingPolygon, item.terrain, item.layerNames);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
if (this._itemListener.has(item.name)) {
|
|
32
|
+
this._itemListener.get(item.name)?.();
|
|
33
|
+
this._itemListener.delete(item.name);
|
|
34
|
+
}
|
|
35
|
+
}),
|
|
36
|
+
this._app.maps.added.addEventListener((map) => {
|
|
37
|
+
if (map instanceof CesiumMap) {
|
|
38
|
+
this._mapListener.set(map.name, this._setMapListener(map));
|
|
39
|
+
}
|
|
40
|
+
}),
|
|
41
|
+
this._app.maps.removed.addEventListener((map) => {
|
|
42
|
+
if (map instanceof CesiumMap) {
|
|
43
|
+
this._array.forEach((item) => {
|
|
44
|
+
removeClippingPolygonFromMap(map, item.clippingPolygon, item.terrain, item.layerNames);
|
|
45
|
+
});
|
|
46
|
+
if (this._mapListener.has(map.name)) {
|
|
47
|
+
this._mapListener.get(map.name)?.();
|
|
48
|
+
this._mapListener.delete(map.name);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}),
|
|
52
|
+
this._app.maps.replaced.addEventListener(({ old }) => {
|
|
53
|
+
if (old instanceof CesiumMap) {
|
|
54
|
+
this._array.forEach((item) => {
|
|
55
|
+
removeClippingPolygonFromMap(old, item.clippingPolygon, item.terrain, item.layerNames);
|
|
56
|
+
});
|
|
57
|
+
if (this._mapListener.has(old.name)) {
|
|
58
|
+
this._mapListener.get(old.name)?.();
|
|
59
|
+
this._mapListener.delete(old.name);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}),
|
|
63
|
+
];
|
|
64
|
+
}
|
|
65
|
+
_getActiveCesiumMaps() {
|
|
66
|
+
return this._app.maps
|
|
67
|
+
.getByType(CesiumMap.className)
|
|
68
|
+
.filter((map) => map.active);
|
|
69
|
+
}
|
|
70
|
+
_setMapListener(map) {
|
|
71
|
+
const listener = [
|
|
72
|
+
map.stateChanged.addEventListener((state) => {
|
|
73
|
+
if (state === MapState.INACTIVE) {
|
|
74
|
+
this._array.forEach((item) => {
|
|
75
|
+
removeClippingPolygonFromMap(map, item.clippingPolygon, item.terrain, item.layerNames);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else if (state === MapState.ACTIVE) {
|
|
79
|
+
this._array
|
|
80
|
+
.filter((item) => item.active)
|
|
81
|
+
.forEach((item) => {
|
|
82
|
+
addClippingPolygonObjectToMap(map, item.clippingPolygon, item.terrain, item.layerNames);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}),
|
|
86
|
+
map.visualizationAdded.addEventListener((v) => {
|
|
87
|
+
if (v instanceof Cesium3DTileset) {
|
|
88
|
+
this._array
|
|
89
|
+
.filter((item) => item.active &&
|
|
90
|
+
(item.layerNames === 'all' ||
|
|
91
|
+
item.layerNames.includes(v[vcsLayerName])))
|
|
92
|
+
.forEach((item) => {
|
|
93
|
+
addClippingPolygon(v, item.clippingPolygon);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}),
|
|
97
|
+
map.visualizationRemoved.addEventListener((v) => {
|
|
98
|
+
if (v instanceof Cesium3DTileset) {
|
|
99
|
+
this._array
|
|
100
|
+
.filter((item) => item.layerNames === 'all' ||
|
|
101
|
+
item.layerNames.includes(v[vcsLayerName]))
|
|
102
|
+
.forEach((item) => {
|
|
103
|
+
removeClippingPolygon(v, item.clippingPolygon);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}),
|
|
107
|
+
];
|
|
108
|
+
return () => listener.forEach((cb) => cb());
|
|
109
|
+
}
|
|
110
|
+
_setItemListener(item) {
|
|
111
|
+
const listener = [
|
|
112
|
+
item.stateChanged.addEventListener(() => {
|
|
113
|
+
const maps = this._getActiveCesiumMaps();
|
|
114
|
+
if (item.active) {
|
|
115
|
+
maps.forEach((map) => addClippingPolygonObjectToMap(map, item.clippingPolygon, item.terrain, item.layerNames));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
maps.forEach((map) => removeClippingPolygonFromMap(map, item.clippingPolygon, item.terrain, item.layerNames));
|
|
119
|
+
}
|
|
120
|
+
}),
|
|
121
|
+
item.clippingPolygonChanged.addEventListener(({ oldValue, newValue }) => {
|
|
122
|
+
if (item.active) {
|
|
123
|
+
const maps = this._getActiveCesiumMaps();
|
|
124
|
+
maps.forEach((map) => removeClippingPolygonFromMap(map, oldValue, item.terrain, item.layerNames));
|
|
125
|
+
maps.forEach((map) => addClippingPolygonObjectToMap(map, newValue, item.terrain, item.layerNames));
|
|
126
|
+
}
|
|
127
|
+
}),
|
|
128
|
+
item.terrainChanged.addEventListener(() => {
|
|
129
|
+
if (item.active) {
|
|
130
|
+
const globes = this._getActiveCesiumMaps()
|
|
131
|
+
.map((map) => map.getScene()?.globe)
|
|
132
|
+
.filter((g) => !!g);
|
|
133
|
+
if (item.terrain) {
|
|
134
|
+
globes.forEach((g) => addClippingPolygon(g, item.clippingPolygon));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
globes.forEach((g) => removeClippingPolygon(g, item.clippingPolygon));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}),
|
|
141
|
+
item.layersChanged.addEventListener(({ newValue, oldValue }) => {
|
|
142
|
+
const maps = this._getActiveCesiumMaps();
|
|
143
|
+
maps.forEach((map) => {
|
|
144
|
+
const old = getTargetTilesets(map, oldValue);
|
|
145
|
+
const tilesets = getTargetTilesets(map, newValue);
|
|
146
|
+
const added = tilesets.filter((i) => !old.includes(i));
|
|
147
|
+
const removed = old.filter((i) => !tilesets.includes(i));
|
|
148
|
+
removed.forEach((tileset) => {
|
|
149
|
+
removeClippingPolygon(tileset, item.clippingPolygon);
|
|
150
|
+
});
|
|
151
|
+
added.forEach((tileset) => {
|
|
152
|
+
addClippingPolygon(tileset, item.clippingPolygon);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}),
|
|
156
|
+
];
|
|
157
|
+
return () => listener.forEach((cb) => cb());
|
|
158
|
+
}
|
|
159
|
+
destroy() {
|
|
160
|
+
this._listener.forEach((cb) => cb());
|
|
161
|
+
this._mapListener.forEach((cb) => cb());
|
|
162
|
+
this._itemListener.forEach((cb) => cb());
|
|
163
|
+
super.destroy();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
export default ClippingPolygonObjectCollection;
|
|
167
|
+
//# sourceMappingURL=clippingPolygonObjectCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clippingPolygonObjectCollection.js","sourceRoot":"","sources":["../../../../src/util/clipping/clippingPolygonObjectCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAGzC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAE7C,MAAM,+BAAgC,SAAQ,UAAiC;IACrE,IAAI,CAAS;IAEb,SAAS,CAAoB;IAE7B,YAAY,GAA4B,IAAI,GAAG,EAAE,CAAC;IAElD,aAAa,GAA4B,IAAI,GAAG,EAAE,CAAC;IAE3D,YAAY,GAAoC,IAAI,QAAQ,EAAE,CAAC;IAE/D,YAAY,GAAW;QACrB,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAEhB,IAAI,CAAC,SAAS,GAAG;YACf,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBACzC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACnB,4BAA4B,CAC1B,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5C,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9C,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC3B,4BAA4B,CAC1B,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACH,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;wBACpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;gBACnD,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC3B,4BAA4B,CAC1B,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACH,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;wBACpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;aAClB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAgB,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,GAAc;QAC5B,MAAM,QAAQ,GAAG;YACf,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1C,IAAI,KAAK,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC3B,4BAA4B,CAC1B,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACrC,IAAI,CAAC,MAAM;yBACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;yBAC7B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAChB,6BAA6B,CAC3B,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACP,CAAC;YACH,CAAC,CAAC;YACF,GAAG,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM;yBACR,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,MAAM;wBACX,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK;4BACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAC/C;yBACA,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAChB,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACP,CAAC;YACH,CAAC,CAAC;YACF,GAAG,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC9C,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM;yBACR,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,UAAU,KAAK,KAAK;wBACzB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAC5C;yBACA,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAChB,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC;YACH,CAAC,CAAC;SACH,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,gBAAgB,CAAC,IAA2B;QAC1C,MAAM,QAAQ,GAAG;YACf,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,6BAA6B,CAC3B,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,4BAA4B,CAC1B,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CACF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACtE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBACzC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,4BAA4B,CAC1B,GAAG,EACH,QAAQ,EACR,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CACF,CAAC;oBACF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,6BAA6B,CAC3B,GAAG,EACH,QAAQ,EACR,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CACF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBACxC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE;yBACvC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC;yBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;oBACrE,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAC/C,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBAElD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEzD,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC1B,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;oBACH,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBACxB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACpD,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;SACH,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAED,eAAe,+BAA+B,CAAC"}
|
|
@@ -3,11 +3,16 @@ import ExclusiveManager from './exclusiveManager.js';
|
|
|
3
3
|
import VcsEvent from '../vcsEvent.js';
|
|
4
4
|
import GlobalHider from '../layer/globalHider.js';
|
|
5
5
|
import type { default as Layer } from '../layer/layer.js';
|
|
6
|
+
import VectorClusterGroupCollection from '../vectorCluster/vectorClusterGroupCollection.js';
|
|
6
7
|
/**
|
|
7
8
|
* The largest integer zindex which can be safely assigned to a layer (equal to Number.MAX_SAFE_INTEGER)
|
|
8
9
|
* You should use this to ensure layers are always rendered on top.
|
|
9
10
|
*/
|
|
10
11
|
export declare const maxZIndex: number;
|
|
12
|
+
export type LayerCollectionOptions = {
|
|
13
|
+
vectorClusterGroupCollection?: VectorClusterGroupCollection;
|
|
14
|
+
destroyVectorClusterGroupCollection?: boolean;
|
|
15
|
+
};
|
|
11
16
|
/**
|
|
12
17
|
* A collection of layers. Manages rendering order and layer exclusivity. Emits state changes for convenience. Passed to
|
|
13
18
|
* {@link Map} for layers available to said map. Layers must have unique names.
|
|
@@ -32,13 +37,16 @@ declare class LayerCollection extends IndexedCollection<Layer> {
|
|
|
32
37
|
* The global hider for this collection.
|
|
33
38
|
*/
|
|
34
39
|
private _globalHider;
|
|
40
|
+
private _vectorClusterGroups;
|
|
35
41
|
/**
|
|
36
42
|
* Locale for this layerCollection, will be synchronized by the vcsApp, if part of an vcsApp.
|
|
37
43
|
* This Locale will be set on all Member Layers. On setting the Locale this will trigger a reload of all locale
|
|
38
44
|
* aware layers.
|
|
39
45
|
*/
|
|
40
46
|
private _locale;
|
|
41
|
-
|
|
47
|
+
private _vectorClusterGroupListeners;
|
|
48
|
+
destroyVectorClusterGroupCollection: boolean;
|
|
49
|
+
constructor(options?: LayerCollectionOptions);
|
|
42
50
|
/**
|
|
43
51
|
* A symbol to describe the local z index of a layer. The local z index must not equal the layers z index, but is
|
|
44
52
|
* always consistent in comparison to the neighbouring layers. If a layer is moved other then by z index, the collection
|
|
@@ -56,6 +64,7 @@ declare class LayerCollection extends IndexedCollection<Layer> {
|
|
|
56
64
|
set globalHider(globalHider: GlobalHider);
|
|
57
65
|
get locale(): string;
|
|
58
66
|
set locale(value: string);
|
|
67
|
+
get vectorClusterGroups(): VectorClusterGroupCollection;
|
|
59
68
|
private _listenToLayerEvents;
|
|
60
69
|
/**
|
|
61
70
|
* Determines the location in the array before the first entry with a higher local z index or null if there is no such position
|
|
@@ -76,6 +85,7 @@ declare class LayerCollection extends IndexedCollection<Layer> {
|
|
|
76
85
|
* and the one higher a higher or equal zIndex.
|
|
77
86
|
*/
|
|
78
87
|
private _ensureLocalZIndex;
|
|
88
|
+
private _setupVectorClusterGroupListeners;
|
|
79
89
|
/**
|
|
80
90
|
* Adds a layer to the collection. Can optionally be passed an index at which to insert the layer.
|
|
81
91
|
* The layer locale will be set to the same locale of the layerCollection. This will trigger a forceRedraw
|