@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.
Files changed (146) hide show
  1. package/dist/cesium.d.ts +3 -0
  2. package/dist/index.d.ts +16 -1
  3. package/dist/index.js +16 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/ol.d.ts +8 -1
  6. package/dist/src/featureProvider/featureProviderSymbols.d.ts +5 -0
  7. package/dist/src/featureProvider/featureProviderSymbols.js +5 -1
  8. package/dist/src/featureProvider/featureProviderSymbols.js.map +1 -1
  9. package/dist/src/interaction/featureAtPixelInteraction.js +58 -62
  10. package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
  11. package/dist/src/interaction/featureProviderInteraction.js +25 -13
  12. package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
  13. package/dist/src/layer/cesium/sourceVectorContextSync.d.ts +27 -0
  14. package/dist/src/layer/cesium/sourceVectorContextSync.js +94 -0
  15. package/dist/src/layer/cesium/sourceVectorContextSync.js.map +1 -0
  16. package/dist/src/layer/cesium/vectorCesiumImpl.d.ts +4 -27
  17. package/dist/src/layer/cesium/vectorCesiumImpl.js +15 -107
  18. package/dist/src/layer/cesium/vectorCesiumImpl.js.map +1 -1
  19. package/dist/src/layer/cesium/vectorContext.d.ts +12 -1
  20. package/dist/src/layer/cesium/vectorContext.js +6 -0
  21. package/dist/src/layer/cesium/vectorContext.js.map +1 -1
  22. package/dist/src/layer/layerSymbols.js +1 -1
  23. package/dist/src/layer/layerSymbols.js.map +1 -1
  24. package/dist/src/layer/oblique/sourceObliqueSync.d.ts +18 -0
  25. package/dist/src/layer/oblique/sourceObliqueSync.js +319 -0
  26. package/dist/src/layer/oblique/sourceObliqueSync.js.map +1 -0
  27. package/dist/src/layer/oblique/vectorObliqueImpl.d.ts +2 -40
  28. package/dist/src/layer/oblique/vectorObliqueImpl.js +8 -283
  29. package/dist/src/layer/oblique/vectorObliqueImpl.js.map +1 -1
  30. package/dist/src/layer/vectorLayer.d.ts +10 -1
  31. package/dist/src/layer/vectorLayer.js +23 -1
  32. package/dist/src/layer/vectorLayer.js.map +1 -1
  33. package/dist/src/map/baseOLMap.js +8 -1
  34. package/dist/src/map/baseOLMap.js.map +1 -1
  35. package/dist/src/map/cesiumMap.d.ts +2 -0
  36. package/dist/src/map/cesiumMap.js +26 -1
  37. package/dist/src/map/cesiumMap.js.map +1 -1
  38. package/dist/src/map/vcsMap.d.ts +24 -12
  39. package/dist/src/map/vcsMap.js +92 -38
  40. package/dist/src/map/vcsMap.js.map +1 -1
  41. package/dist/src/ol/source/ClusterEnhancedVectorSource.d.ts +6 -4
  42. package/dist/src/ol/source/ClusterEnhancedVectorSource.js +4 -9
  43. package/dist/src/ol/source/ClusterEnhancedVectorSource.js.map +1 -1
  44. package/dist/src/ol/source/VcsCluster.d.ts +10 -10
  45. package/dist/src/ol/source/VcsCluster.js +23 -7
  46. package/dist/src/ol/source/VcsCluster.js.map +1 -1
  47. package/dist/src/util/clipping/clippingPolygonHelper.d.ts +7 -0
  48. package/dist/src/util/clipping/clippingPolygonHelper.js +53 -0
  49. package/dist/src/util/clipping/clippingPolygonHelper.js.map +1 -0
  50. package/dist/src/util/clipping/clippingPolygonObject.d.ts +59 -0
  51. package/dist/src/util/clipping/clippingPolygonObject.js +158 -0
  52. package/dist/src/util/clipping/clippingPolygonObject.js.map +1 -0
  53. package/dist/src/util/clipping/clippingPolygonObjectCollection.d.ts +18 -0
  54. package/dist/src/util/clipping/clippingPolygonObjectCollection.js +167 -0
  55. package/dist/src/util/clipping/clippingPolygonObjectCollection.js.map +1 -0
  56. package/dist/src/util/layerCollection.d.ts +11 -1
  57. package/dist/src/util/layerCollection.js +67 -12
  58. package/dist/src/util/layerCollection.js.map +1 -1
  59. package/dist/src/util/mapCollection.d.ts +16 -1
  60. package/dist/src/util/mapCollection.js +37 -3
  61. package/dist/src/util/mapCollection.js.map +1 -1
  62. package/dist/src/util/renderScreenshot.d.ts +9 -0
  63. package/dist/src/util/renderScreenshot.js +162 -0
  64. package/dist/src/util/renderScreenshot.js.map +1 -0
  65. package/dist/src/util/rotation.d.ts +30 -0
  66. package/dist/src/util/rotation.js +145 -0
  67. package/dist/src/util/rotation.js.map +1 -0
  68. package/dist/src/util/vcsTemplate.d.ts +7 -0
  69. package/dist/src/util/vcsTemplate.js +248 -0
  70. package/dist/src/util/vcsTemplate.js.map +1 -0
  71. package/dist/src/vcsApp.d.ts +7 -0
  72. package/dist/src/vcsApp.js +29 -0
  73. package/dist/src/vcsApp.js.map +1 -1
  74. package/dist/src/vcsModule.d.ts +6 -2
  75. package/dist/src/vcsModule.js.map +1 -1
  76. package/dist/src/vectorCluster/vectorClusterCesiumContext.d.ts +18 -0
  77. package/dist/src/{layer/cesium/clusterContext.js → vectorCluster/vectorClusterCesiumContext.js} +28 -42
  78. package/dist/src/vectorCluster/vectorClusterCesiumContext.js.map +1 -0
  79. package/dist/src/vectorCluster/vectorClusterGroup.d.ts +96 -0
  80. package/dist/src/vectorCluster/vectorClusterGroup.js +320 -0
  81. package/dist/src/vectorCluster/vectorClusterGroup.js.map +1 -0
  82. package/dist/src/vectorCluster/vectorClusterGroupCesiumImpl.d.ts +20 -0
  83. package/dist/src/vectorCluster/vectorClusterGroupCesiumImpl.js +115 -0
  84. package/dist/src/vectorCluster/vectorClusterGroupCesiumImpl.js.map +1 -0
  85. package/dist/src/vectorCluster/vectorClusterGroupCollection.d.ts +19 -0
  86. package/dist/src/vectorCluster/vectorClusterGroupCollection.js +37 -0
  87. package/dist/src/vectorCluster/vectorClusterGroupCollection.js.map +1 -0
  88. package/dist/src/vectorCluster/vectorClusterGroupImpl.d.ts +31 -0
  89. package/dist/src/vectorCluster/vectorClusterGroupImpl.js +76 -0
  90. package/dist/src/vectorCluster/vectorClusterGroupImpl.js.map +1 -0
  91. package/dist/src/vectorCluster/vectorClusterGroupObliqueImpl.d.ts +17 -0
  92. package/dist/src/vectorCluster/vectorClusterGroupObliqueImpl.js +62 -0
  93. package/dist/src/vectorCluster/vectorClusterGroupObliqueImpl.js.map +1 -0
  94. package/dist/src/vectorCluster/vectorClusterGroupOpenlayersImpl.d.ts +17 -0
  95. package/dist/src/vectorCluster/vectorClusterGroupOpenlayersImpl.js +62 -0
  96. package/dist/src/vectorCluster/vectorClusterGroupOpenlayersImpl.js.map +1 -0
  97. package/dist/src/vectorCluster/vectorClusterStyleItem.d.ts +110 -0
  98. package/dist/src/vectorCluster/vectorClusterStyleItem.js +374 -0
  99. package/dist/src/vectorCluster/vectorClusterStyleItem.js.map +1 -0
  100. package/dist/src/vectorCluster/vectorClusterSymbols.d.ts +1 -0
  101. package/dist/src/vectorCluster/vectorClusterSymbols.js +3 -0
  102. package/dist/src/vectorCluster/vectorClusterSymbols.js.map +1 -0
  103. package/index.ts +42 -1
  104. package/package.json +3 -1
  105. package/src/cesium/cesium.d.ts +3 -0
  106. package/src/featureProvider/featureProviderSymbols.ts +6 -1
  107. package/src/interaction/featureAtPixelInteraction.ts +109 -84
  108. package/src/interaction/featureProviderInteraction.ts +42 -28
  109. package/src/layer/cesium/sourceVectorContextSync.ts +134 -0
  110. package/src/layer/cesium/vcsTile/vcsDebugTile.ts +1 -1
  111. package/src/layer/cesium/vcsTile/vcsVectorTile.ts +1 -1
  112. package/src/layer/cesium/vectorCesiumImpl.ts +30 -144
  113. package/src/layer/cesium/vectorContext.ts +17 -1
  114. package/src/layer/layerSymbols.ts +1 -1
  115. package/src/layer/oblique/sourceObliqueSync.ts +436 -0
  116. package/src/layer/oblique/vectorObliqueImpl.ts +11 -397
  117. package/src/layer/vectorLayer.ts +35 -2
  118. package/src/map/baseOLMap.ts +8 -1
  119. package/src/map/cesiumMap.ts +36 -3
  120. package/src/map/vcsMap.ts +121 -47
  121. package/src/ol/ol.d.ts +8 -1
  122. package/src/ol/source/{ClusterEnhancedVectorSource.js → ClusterEnhancedVectorSource.ts} +7 -10
  123. package/src/ol/source/VcsCluster.ts +58 -0
  124. package/src/util/clipping/clippingPolygonHelper.ts +86 -0
  125. package/src/util/clipping/clippingPolygonObject.ts +223 -0
  126. package/src/util/clipping/clippingPolygonObjectCollection.ts +249 -0
  127. package/src/util/layerCollection.ts +90 -12
  128. package/src/util/mapCollection.ts +53 -2
  129. package/src/util/renderScreenshot.ts +193 -0
  130. package/src/util/rotation.ts +215 -0
  131. package/src/util/vcsTemplate.ts +373 -0
  132. package/src/vcsApp.ts +65 -0
  133. package/src/vcsModule.ts +6 -2
  134. package/src/vectorCluster/vectorClusterCesiumContext.ts +123 -0
  135. package/src/vectorCluster/vectorClusterGroup.ts +463 -0
  136. package/src/vectorCluster/vectorClusterGroupCesiumImpl.ts +176 -0
  137. package/src/vectorCluster/vectorClusterGroupCollection.ts +43 -0
  138. package/src/vectorCluster/vectorClusterGroupImpl.ts +107 -0
  139. package/src/vectorCluster/vectorClusterGroupObliqueImpl.ts +84 -0
  140. package/src/vectorCluster/vectorClusterGroupOpenlayersImpl.ts +81 -0
  141. package/src/vectorCluster/vectorClusterStyleItem.ts +490 -0
  142. package/src/vectorCluster/vectorClusterSymbols.ts +2 -0
  143. package/dist/src/layer/cesium/clusterContext.d.ts +0 -20
  144. package/dist/src/layer/cesium/clusterContext.js.map +0 -1
  145. package/src/layer/cesium/clusterContext.ts +0 -140
  146. 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
- constructor(props) {
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
- pause() {
16
- this._paused = true;
28
+ addFeatures(features) {
29
+ features.forEach((f) => {
30
+ f[vectorClusterGroupName] = this._name;
31
+ });
32
+ super.addFeatures(features);
17
33
  }
18
- resume() {
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.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAW,SAAQ,OAAO;IAC9B,YAAY,KAAK;QACf,KAAK,CAAC,KAAK,CAAC,CAAC;QACb;;WAEG;QACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,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"}
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":"AAAA,OAAO,SAAS,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,SAA+B,MAAM,oBAAoB,CAAC;AACjE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAN,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IACpC,mFAAY,CAAA;IACZ,+EAAU,CAAA;AACZ,CAAC,EAHW,0BAA0B,KAA1B,0BAA0B,QAGrC;AASD,SAAS,kBAAkB,CAAC,UAA4B;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AACrE,CAAC;AAED,MAAM,qBAAsB,SAAQ,SAAS;IAC3C,MAAM,KAAK,SAAS;QAClB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,iBAAiB;QACtB,OAAO;YACL,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAyB;QAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,QAAQ,YAAY,OAAO,EAAE,CAAC;YAChC,OAAO,qBAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAiB;QACnC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,IAAI,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAU;IAEjB,MAAM,CAA6B;IAE3C,YAAY,GAAG,IAAI,QAAQ,EAA8B,CAAC;IAElD,WAAW,CAAmB;IAE9B,QAAQ,CAAU;IAElB,YAAY,GAAsB,EAAE,CAAC;IAErC,gBAAgB,GAAgC,SAAS,CAAC;IAElE,sBAAsB,GAAG,IAAI,QAAQ,EAGjC,CAAC;IAEL,aAAa,GAAG,IAAI,QAAQ,EAGxB,CAAC;IAEL,cAAc,GAAG,IAAI,QAAQ,EAAW,CAAC;IAEzC,YAAY,OAAqC;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,cAAc,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;QAEjE,IAAI,CAAC,eAAe,GAAG,YAAY,CACjC,OAAO,CAAC,eAAe,EACvB,cAAc,CAAC,eAAe,CAC/B,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC;QAElD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC,UAAW,CAAC;QAEpE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,KAAK,0BAA0B,CAAC,MAAM,CAAC;IAC3D,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,CAAC,OAAgB;QAC1B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,WAAyB;QACtC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,uBAAuB,CAAC,CAAC,KAAK,CACtC,sCAAsC,CACvC,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,uBAAuB,CAAC,CAAC,KAAK,CACtC,2CAA2C,CAC5C,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,aAAa,CAAC,UAA4B;QACxC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC5B,QAAQ,EAAE,UAAU;gBACpB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,KAAK,0BAA0B,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,MAAM,KAAK,0BAA0B,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAiC;YAC3C,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;SAChD,CAAC;QACF,MAAM,cAAc,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;QAEjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;YAC5D,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAChD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAED,eAAe,qBAAqB,CAAC"}
@@ -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
- constructor();
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