@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
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import OLVectorLayer from 'ol/layer/Vector.js';
|
|
2
|
+
import VectorClusterGroupImpl from './vectorClusterGroupImpl.js';
|
|
3
|
+
import ObliqueMap from '../map/obliqueMap.js';
|
|
4
|
+
import VcsCluster from '../ol/source/VcsCluster.js';
|
|
5
|
+
import { VectorClusterGroupImplementationOptions } from './vectorClusterGroup.js';
|
|
6
|
+
export default class VectorClusterGroupObliqueImpl extends VectorClusterGroupImpl<ObliqueMap> {
|
|
7
|
+
private _clusterSource;
|
|
8
|
+
private _olLayer;
|
|
9
|
+
private _sourceObliqueSync;
|
|
10
|
+
constructor(map: ObliqueMap, options: VectorClusterGroupImplementationOptions);
|
|
11
|
+
get clusterSource(): VcsCluster;
|
|
12
|
+
get olLayer(): OLVectorLayer | undefined;
|
|
13
|
+
initialize(): Promise<void>;
|
|
14
|
+
activate(): Promise<void>;
|
|
15
|
+
deactivate(): void;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import OLVectorLayer from 'ol/layer/Vector.js';
|
|
2
|
+
import VectorClusterGroupImpl from './vectorClusterGroupImpl.js';
|
|
3
|
+
import VcsCluster from '../ol/source/VcsCluster.js';
|
|
4
|
+
import { createSourceObliqueSync, } from '../layer/oblique/sourceObliqueSync.js';
|
|
5
|
+
import { vectorClusterGroupName } from './vectorClusterSymbols.js';
|
|
6
|
+
export default class VectorClusterGroupObliqueImpl extends VectorClusterGroupImpl {
|
|
7
|
+
_clusterSource;
|
|
8
|
+
_olLayer;
|
|
9
|
+
_sourceObliqueSync;
|
|
10
|
+
constructor(map, options) {
|
|
11
|
+
super(map, options);
|
|
12
|
+
this._sourceObliqueSync = createSourceObliqueSync(options.source, map);
|
|
13
|
+
this._clusterSource = new VcsCluster({
|
|
14
|
+
source: this._sourceObliqueSync.obliqueSource,
|
|
15
|
+
distance: options.clusterDistance,
|
|
16
|
+
}, this.name);
|
|
17
|
+
}
|
|
18
|
+
get clusterSource() {
|
|
19
|
+
return this._clusterSource;
|
|
20
|
+
}
|
|
21
|
+
get olLayer() {
|
|
22
|
+
return this._olLayer;
|
|
23
|
+
}
|
|
24
|
+
async initialize() {
|
|
25
|
+
if (!this.initialized) {
|
|
26
|
+
const olLayer = new OLVectorLayer({
|
|
27
|
+
visible: false,
|
|
28
|
+
source: this._clusterSource,
|
|
29
|
+
style: this.style,
|
|
30
|
+
zIndex: Number.MAX_SAFE_INTEGER,
|
|
31
|
+
});
|
|
32
|
+
olLayer[vectorClusterGroupName] = this.name;
|
|
33
|
+
this._olLayer = olLayer;
|
|
34
|
+
this.map.addOLLayer(this._olLayer);
|
|
35
|
+
}
|
|
36
|
+
await super.initialize();
|
|
37
|
+
}
|
|
38
|
+
async activate() {
|
|
39
|
+
await super.activate();
|
|
40
|
+
if (this.active) {
|
|
41
|
+
this._olLayer?.setVisible(true);
|
|
42
|
+
this._clusterSource.paused = false;
|
|
43
|
+
this._clusterSource.refresh();
|
|
44
|
+
this._sourceObliqueSync.activate();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
deactivate() {
|
|
48
|
+
super.deactivate();
|
|
49
|
+
this._olLayer?.setVisible(false);
|
|
50
|
+
this._clusterSource.paused = true;
|
|
51
|
+
this._sourceObliqueSync.deactivate();
|
|
52
|
+
}
|
|
53
|
+
destroy() {
|
|
54
|
+
if (this._olLayer) {
|
|
55
|
+
this.map.removeOLLayer(this._olLayer);
|
|
56
|
+
}
|
|
57
|
+
this._olLayer = undefined;
|
|
58
|
+
this._sourceObliqueSync.destroy();
|
|
59
|
+
super.destroy();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=vectorClusterGroupObliqueImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorClusterGroupObliqueImpl.js","sourceRoot":"","sources":["../../../src/vectorCluster/vectorClusterGroupObliqueImpl.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAEjE,OAAO,UAAU,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EACL,uBAAuB,GAExB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,sBAAkC;IACnF,cAAc,CAAa;IAE3B,QAAQ,CAA4B;IAEpC,kBAAkB,CAAoB;IAE9C,YACE,GAAe,EACf,OAAgD;QAEhD,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEpB,IAAI,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvE,IAAI,CAAC,cAAc,GAAG,IAAI,UAAU,CAClC;YACE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa;YAC7C,QAAQ,EAAE,OAAO,CAAC,eAAe;SAClC,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC;gBAChC,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI,CAAC,cAAc;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,MAAM,CAAC,gBAAgB;aAChC,CAAC,CAAC;YACH,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAE1B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClC,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import OLVectorLayer from 'ol/layer/Vector.js';
|
|
2
|
+
import { VectorClusterGroupImplementationOptions } from './vectorClusterGroup.js';
|
|
3
|
+
import OpenlayersMap from '../map/openlayersMap.js';
|
|
4
|
+
import VcsCluster from '../ol/source/VcsCluster.js';
|
|
5
|
+
import VectorClusterGroupImpl from './vectorClusterGroupImpl.js';
|
|
6
|
+
export default class VectorClusterGroupOpenlayersImpl extends VectorClusterGroupImpl<OpenlayersMap> {
|
|
7
|
+
static get className(): string;
|
|
8
|
+
private _clusterSource;
|
|
9
|
+
private _olLayer;
|
|
10
|
+
constructor(map: OpenlayersMap, options: VectorClusterGroupImplementationOptions);
|
|
11
|
+
initialize(): Promise<void>;
|
|
12
|
+
get clusterSource(): VcsCluster;
|
|
13
|
+
get olLayer(): OLVectorLayer | undefined;
|
|
14
|
+
activate(): Promise<void>;
|
|
15
|
+
deactivate(): void;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import OLVectorLayer from 'ol/layer/Vector.js';
|
|
2
|
+
import VcsCluster from '../ol/source/VcsCluster.js';
|
|
3
|
+
import VectorClusterGroupImpl from './vectorClusterGroupImpl.js';
|
|
4
|
+
import { vectorClusterGroupName } from './vectorClusterSymbols.js';
|
|
5
|
+
export default class VectorClusterGroupOpenlayersImpl extends VectorClusterGroupImpl {
|
|
6
|
+
static get className() {
|
|
7
|
+
return 'VectorClusterGroupOpenlayersImpl';
|
|
8
|
+
}
|
|
9
|
+
_clusterSource;
|
|
10
|
+
_olLayer;
|
|
11
|
+
constructor(map, options) {
|
|
12
|
+
super(map, options);
|
|
13
|
+
this._clusterSource = new VcsCluster({
|
|
14
|
+
source: options.source,
|
|
15
|
+
distance: options.clusterDistance,
|
|
16
|
+
}, this.name);
|
|
17
|
+
this._clusterSource.paused = true;
|
|
18
|
+
}
|
|
19
|
+
async initialize() {
|
|
20
|
+
if (!this.initialized) {
|
|
21
|
+
const olLayer = new OLVectorLayer({
|
|
22
|
+
visible: false,
|
|
23
|
+
source: this._clusterSource,
|
|
24
|
+
style: this.style,
|
|
25
|
+
zIndex: Number.MAX_SAFE_INTEGER,
|
|
26
|
+
});
|
|
27
|
+
olLayer[vectorClusterGroupName] = this.name;
|
|
28
|
+
this._olLayer = olLayer;
|
|
29
|
+
this.map.addOLLayer(this._olLayer);
|
|
30
|
+
}
|
|
31
|
+
await super.initialize();
|
|
32
|
+
}
|
|
33
|
+
get clusterSource() {
|
|
34
|
+
return this._clusterSource;
|
|
35
|
+
}
|
|
36
|
+
get olLayer() {
|
|
37
|
+
return this._olLayer;
|
|
38
|
+
}
|
|
39
|
+
async activate() {
|
|
40
|
+
await super.activate();
|
|
41
|
+
if (this.active) {
|
|
42
|
+
this._olLayer?.setVisible(true);
|
|
43
|
+
this._clusterSource.paused = false;
|
|
44
|
+
this._clusterSource.refresh();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
deactivate() {
|
|
48
|
+
super.deactivate();
|
|
49
|
+
this._olLayer?.setVisible(false);
|
|
50
|
+
this._clusterSource.paused = true;
|
|
51
|
+
}
|
|
52
|
+
destroy() {
|
|
53
|
+
if (this._olLayer) {
|
|
54
|
+
this.map.removeOLLayer(this._olLayer);
|
|
55
|
+
}
|
|
56
|
+
this._olLayer = undefined;
|
|
57
|
+
this._clusterSource.clear(true);
|
|
58
|
+
this._clusterSource.dispose();
|
|
59
|
+
super.destroy();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=vectorClusterGroupOpenlayersImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorClusterGroupOpenlayersImpl.js","sourceRoot":"","sources":["../../../src/vectorCluster/vectorClusterGroupOpenlayersImpl.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAG/C,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,gCAAiC,SAAQ,sBAAqC;IACjG,MAAM,KAAK,SAAS;QAClB,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IAEO,cAAc,CAAa;IAE3B,QAAQ,CAA4B;IAE5C,YACE,GAAkB,EAClB,OAAgD;QAEhD,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,UAAU,CAClC;YACE,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,eAAe;SAClC,EACD,IAAI,CAAC,IAAI,CACV,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC;gBAChC,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI,CAAC,cAAc;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,MAAM,CAAC,gBAAgB;aAChC,CAAC,CAAC;YAEH,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAE1B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { StyleFunction } from 'ol/style/Style.js';
|
|
2
|
+
import Feature from 'ol/Feature.js';
|
|
3
|
+
import VcsObject, { VcsObjectOptions } from '../vcsObject.js';
|
|
4
|
+
import VcsEvent from '../vcsEvent.js';
|
|
5
|
+
import type VectorLayer from '../layer/vectorLayer.js';
|
|
6
|
+
export type VectorClusterStyleItemOptions = VcsObjectOptions & {
|
|
7
|
+
template?: string | VectorClusterTemplateFunction;
|
|
8
|
+
fillColor?: string;
|
|
9
|
+
strokeColor?: string;
|
|
10
|
+
strokeWidth?: number;
|
|
11
|
+
textColor?: string;
|
|
12
|
+
font?: string;
|
|
13
|
+
breaks?: number[];
|
|
14
|
+
zeroScaleOffset?: number;
|
|
15
|
+
scaleFactor?: number;
|
|
16
|
+
};
|
|
17
|
+
export type VectorClusterTemplateFunction = (styleItem: VectorClusterStyleItem, feature: Feature[], getLayerByName: (layerName: string) => VectorLayer | undefined) => {
|
|
18
|
+
template: string;
|
|
19
|
+
cacheKey: string;
|
|
20
|
+
context?: Record<string, unknown>;
|
|
21
|
+
};
|
|
22
|
+
export default class VectorClusterStyleItem extends VcsObject {
|
|
23
|
+
static get className(): string;
|
|
24
|
+
static getDefaultOptions(): Required<VectorClusterStyleItemOptions>;
|
|
25
|
+
private _template;
|
|
26
|
+
private _templateFunction;
|
|
27
|
+
private _breaks;
|
|
28
|
+
private _zeroScaleOffset;
|
|
29
|
+
private _fillColor;
|
|
30
|
+
private _strokeColor;
|
|
31
|
+
private _strokeWidth;
|
|
32
|
+
private _textColor;
|
|
33
|
+
private _font;
|
|
34
|
+
private _scaleFactor;
|
|
35
|
+
private _styleCache;
|
|
36
|
+
styleChanged: VcsEvent<void>;
|
|
37
|
+
constructor(options: VectorClusterStyleItemOptions);
|
|
38
|
+
/**
|
|
39
|
+
* An array of cluster sizes to break at. Typically the first couple of sizes are
|
|
40
|
+
* a series (meaning: not grouped). Later breaks are non sequential and used for grouping
|
|
41
|
+
* clusters larger. [2, 3, 4, 5, 10] would start grouping at clusters larger or equal 5
|
|
42
|
+
* entries.
|
|
43
|
+
*/
|
|
44
|
+
get breaks(): number[];
|
|
45
|
+
set breaks(breaks: number[]);
|
|
46
|
+
/**
|
|
47
|
+
* The index of breaks to st. for indexes [2, 3, 4, 5, 10] and a zeroScale offset of 3
|
|
48
|
+
* would lead to icons 2, 3, 4 having the same size and no "+" attached. 5 and 10
|
|
49
|
+
* would be scaled by the scale factor and a "+" added to the text
|
|
50
|
+
*/
|
|
51
|
+
get zeroScaleOffset(): number;
|
|
52
|
+
set zeroScaleOffset(zeroScaleOffset: number);
|
|
53
|
+
/**
|
|
54
|
+
* The fill color. This must be a css string.
|
|
55
|
+
*/
|
|
56
|
+
get fillColor(): string;
|
|
57
|
+
set fillColor(fillColor: string);
|
|
58
|
+
/**
|
|
59
|
+
* The stroke color. This must be a css string.
|
|
60
|
+
*/
|
|
61
|
+
get strokeColor(): string;
|
|
62
|
+
set strokeColor(strokeColor: string);
|
|
63
|
+
/**
|
|
64
|
+
* The stroke color. This must be a css string.
|
|
65
|
+
*/
|
|
66
|
+
get strokeWidth(): number;
|
|
67
|
+
set strokeWidth(strokeWidth: number);
|
|
68
|
+
/**
|
|
69
|
+
* The text color. This must be a css string.
|
|
70
|
+
*/
|
|
71
|
+
get textColor(): string;
|
|
72
|
+
set textColor(textColor: string);
|
|
73
|
+
/**
|
|
74
|
+
* The font to use. Must be css font attribute.
|
|
75
|
+
*/
|
|
76
|
+
get font(): string;
|
|
77
|
+
set font(font: string);
|
|
78
|
+
/**
|
|
79
|
+
* The factor by which to multiply the index of the used break grouping
|
|
80
|
+
* (subtracted by the zeroScaleOffset)
|
|
81
|
+
*/
|
|
82
|
+
get scaleFactor(): number;
|
|
83
|
+
set scaleFactor(scaleFactor: number);
|
|
84
|
+
get template(): string | VectorClusterTemplateFunction;
|
|
85
|
+
setTemplate(template: string | VectorClusterTemplateFunction): void;
|
|
86
|
+
/**
|
|
87
|
+
* Finds the breaks index of a specified cluster size.
|
|
88
|
+
*/
|
|
89
|
+
findBreakIndex(size: number): number;
|
|
90
|
+
/**
|
|
91
|
+
* Gets the cluster text based on breaks and zeroScaleOffset. Adds a + to all sizes with an index larger then the zeroScaleOffset.
|
|
92
|
+
*/
|
|
93
|
+
getClusterText(size: number): string;
|
|
94
|
+
/**
|
|
95
|
+
* Determines the scale based on break index and zeroScaleOffset. Cluster sizes with an index less then zeroScaleOffset
|
|
96
|
+
* are not scaled.
|
|
97
|
+
*/
|
|
98
|
+
determineScale(size: number): number;
|
|
99
|
+
createStyleFunction(getLayerByName: (layerName: string) => VectorLayer | undefined): StyleFunction;
|
|
100
|
+
/**
|
|
101
|
+
* Clears the style cache to ensure new changes can take effect.
|
|
102
|
+
* @api
|
|
103
|
+
*/
|
|
104
|
+
clearCache(): void;
|
|
105
|
+
toJSON(): VectorClusterStyleItemOptions;
|
|
106
|
+
equals(other: VectorClusterStyleItem): boolean;
|
|
107
|
+
destroy(): void;
|
|
108
|
+
}
|
|
109
|
+
export declare function getDefaultClusterStyleItem(): VectorClusterStyleItem;
|
|
110
|
+
export declare function getDefaultClusterHighlightStyleItem(): VectorClusterStyleItemOptions;
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import Style from 'ol/style/Style.js';
|
|
2
|
+
import Icon from 'ol/style/Icon.js';
|
|
3
|
+
import { check, is, oneOf } from '@vcsuite/check';
|
|
4
|
+
import { parseInteger, parseNumber } from '@vcsuite/parsers';
|
|
5
|
+
import deepEqual from 'fast-deep-equal';
|
|
6
|
+
import { originalFeatureSymbol } from '../layer/vectorSymbols.js';
|
|
7
|
+
import { highlighted } from '../layer/featureVisibility.js';
|
|
8
|
+
import VcsObject from '../vcsObject.js';
|
|
9
|
+
import VcsEvent from '../vcsEvent.js';
|
|
10
|
+
import { renderTemplate } from '../util/vcsTemplate.js';
|
|
11
|
+
import { vectorClusterGroupName } from './vectorClusterSymbols.js';
|
|
12
|
+
import { vcsLayerName } from '../layer/layerSymbols.js';
|
|
13
|
+
function createDefaultTemplateFunction(template) {
|
|
14
|
+
return (styleItem, features) => ({
|
|
15
|
+
template,
|
|
16
|
+
cacheKey: String(styleItem.findBreakIndex(features.length)),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export default class VectorClusterStyleItem extends VcsObject {
|
|
20
|
+
static get className() {
|
|
21
|
+
return 'VectorClusterStyleItem';
|
|
22
|
+
}
|
|
23
|
+
static getDefaultOptions() {
|
|
24
|
+
return {
|
|
25
|
+
type: 'VectorClusterStyleItem',
|
|
26
|
+
name: '',
|
|
27
|
+
properties: {},
|
|
28
|
+
template: [
|
|
29
|
+
'<svg width="64" height="64" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">',
|
|
30
|
+
' <defs><style>',
|
|
31
|
+
' .cls-1 {',
|
|
32
|
+
' fill: {{ fillColor }};',
|
|
33
|
+
' stroke: {{ strokeColor }};',
|
|
34
|
+
' stroke-miterlimit: 10;',
|
|
35
|
+
' stroke-width: {{ strokeWidth }}px;',
|
|
36
|
+
' }',
|
|
37
|
+
' .text {',
|
|
38
|
+
' font: {{ font }};',
|
|
39
|
+
' fill: {{ textColor }};',
|
|
40
|
+
' text-anchor: middle;',
|
|
41
|
+
' alignment-baseline: middle;',
|
|
42
|
+
' dominant-baseline: middle;',
|
|
43
|
+
' }',
|
|
44
|
+
' </style></defs>',
|
|
45
|
+
' <circle id="outer" class="cls-1" cx="32" cy="32" r="30"/>',
|
|
46
|
+
' <text x="32" y="32" class="text">',
|
|
47
|
+
' {{ text }}',
|
|
48
|
+
' </text>',
|
|
49
|
+
'</svg>',
|
|
50
|
+
].join(''),
|
|
51
|
+
fillColor: '#ffffff',
|
|
52
|
+
strokeColor: '#2a2a2a',
|
|
53
|
+
strokeWidth: 4,
|
|
54
|
+
textColor: '#2a2a2a',
|
|
55
|
+
font: 'normal normal 700 32px Calibri-Bold,Calibri',
|
|
56
|
+
breaks: [2, 3, 4, 5, 10, 15, 20, 25],
|
|
57
|
+
zeroScaleOffset: 3,
|
|
58
|
+
scaleFactor: 0.08,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
_template = '';
|
|
62
|
+
_templateFunction = createDefaultTemplateFunction('');
|
|
63
|
+
_breaks = [];
|
|
64
|
+
_zeroScaleOffset;
|
|
65
|
+
_fillColor;
|
|
66
|
+
_strokeColor;
|
|
67
|
+
_strokeWidth;
|
|
68
|
+
_textColor;
|
|
69
|
+
_font;
|
|
70
|
+
_scaleFactor;
|
|
71
|
+
_styleCache = new Map();
|
|
72
|
+
styleChanged = new VcsEvent();
|
|
73
|
+
constructor(options) {
|
|
74
|
+
super(options);
|
|
75
|
+
const defaultOptions = VectorClusterStyleItem.getDefaultOptions();
|
|
76
|
+
const configTemplate = Array.isArray(options.template)
|
|
77
|
+
? options.template.join('')
|
|
78
|
+
: options.template;
|
|
79
|
+
this.setTemplate(configTemplate ?? defaultOptions.template);
|
|
80
|
+
this._breaks = options.breaks?.slice() ?? defaultOptions.breaks;
|
|
81
|
+
this._zeroScaleOffset = parseInteger(options.zeroScaleOffset, defaultOptions.zeroScaleOffset);
|
|
82
|
+
this._fillColor = options.fillColor ?? defaultOptions.fillColor;
|
|
83
|
+
this._strokeColor = options.strokeColor ?? defaultOptions.strokeColor;
|
|
84
|
+
this._strokeWidth = parseNumber(options.strokeWidth, defaultOptions.strokeWidth);
|
|
85
|
+
this._textColor = options.textColor ?? defaultOptions.textColor;
|
|
86
|
+
this._font = options.font ?? defaultOptions.font;
|
|
87
|
+
this._scaleFactor = parseNumber(options.scaleFactor, defaultOptions.scaleFactor);
|
|
88
|
+
this.styleChanged.addEventListener(() => {
|
|
89
|
+
this.clearCache();
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* An array of cluster sizes to break at. Typically the first couple of sizes are
|
|
94
|
+
* a series (meaning: not grouped). Later breaks are non sequential and used for grouping
|
|
95
|
+
* clusters larger. [2, 3, 4, 5, 10] would start grouping at clusters larger or equal 5
|
|
96
|
+
* entries.
|
|
97
|
+
*/
|
|
98
|
+
get breaks() {
|
|
99
|
+
return this._breaks.slice();
|
|
100
|
+
}
|
|
101
|
+
set breaks(breaks) {
|
|
102
|
+
check(breaks, [Number]);
|
|
103
|
+
const sortedBreaks = breaks.sort((a, b) => (a < b ? -1 : 1));
|
|
104
|
+
const changed = sortedBreaks.find((b, i) => b !== this._breaks[i]);
|
|
105
|
+
if (changed) {
|
|
106
|
+
this._breaks = breaks;
|
|
107
|
+
this.styleChanged.raiseEvent();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The index of breaks to st. for indexes [2, 3, 4, 5, 10] and a zeroScale offset of 3
|
|
112
|
+
* would lead to icons 2, 3, 4 having the same size and no "+" attached. 5 and 10
|
|
113
|
+
* would be scaled by the scale factor and a "+" added to the text
|
|
114
|
+
*/
|
|
115
|
+
get zeroScaleOffset() {
|
|
116
|
+
return this._zeroScaleOffset;
|
|
117
|
+
}
|
|
118
|
+
set zeroScaleOffset(zeroScaleOffset) {
|
|
119
|
+
check(zeroScaleOffset, Number);
|
|
120
|
+
if (zeroScaleOffset !== this._zeroScaleOffset) {
|
|
121
|
+
this._zeroScaleOffset = zeroScaleOffset;
|
|
122
|
+
this.styleChanged.raiseEvent();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The fill color. This must be a css string.
|
|
127
|
+
*/
|
|
128
|
+
get fillColor() {
|
|
129
|
+
return this._fillColor;
|
|
130
|
+
}
|
|
131
|
+
set fillColor(fillColor) {
|
|
132
|
+
check(fillColor, String);
|
|
133
|
+
if (fillColor !== this._fillColor) {
|
|
134
|
+
this._fillColor = fillColor;
|
|
135
|
+
this.styleChanged.raiseEvent();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The stroke color. This must be a css string.
|
|
140
|
+
*/
|
|
141
|
+
get strokeColor() {
|
|
142
|
+
return this._strokeColor;
|
|
143
|
+
}
|
|
144
|
+
set strokeColor(strokeColor) {
|
|
145
|
+
check(strokeColor, String);
|
|
146
|
+
if (strokeColor !== this._strokeColor) {
|
|
147
|
+
this._strokeColor = strokeColor;
|
|
148
|
+
this.styleChanged.raiseEvent();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The stroke color. This must be a css string.
|
|
153
|
+
*/
|
|
154
|
+
get strokeWidth() {
|
|
155
|
+
return this._strokeWidth;
|
|
156
|
+
}
|
|
157
|
+
set strokeWidth(strokeWidth) {
|
|
158
|
+
check(strokeWidth, Number);
|
|
159
|
+
if (strokeWidth !== this._strokeWidth) {
|
|
160
|
+
this._strokeWidth = strokeWidth;
|
|
161
|
+
this.styleChanged.raiseEvent();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The text color. This must be a css string.
|
|
166
|
+
*/
|
|
167
|
+
get textColor() {
|
|
168
|
+
return this._textColor;
|
|
169
|
+
}
|
|
170
|
+
set textColor(textColor) {
|
|
171
|
+
check(textColor, String);
|
|
172
|
+
if (textColor !== this._textColor) {
|
|
173
|
+
this._textColor = textColor;
|
|
174
|
+
this.styleChanged.raiseEvent();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* The font to use. Must be css font attribute.
|
|
179
|
+
*/
|
|
180
|
+
get font() {
|
|
181
|
+
return this._font;
|
|
182
|
+
}
|
|
183
|
+
set font(font) {
|
|
184
|
+
check(font, String);
|
|
185
|
+
if (font !== this._font) {
|
|
186
|
+
this._font = font;
|
|
187
|
+
this.styleChanged.raiseEvent();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* The factor by which to multiply the index of the used break grouping
|
|
192
|
+
* (subtracted by the zeroScaleOffset)
|
|
193
|
+
*/
|
|
194
|
+
get scaleFactor() {
|
|
195
|
+
return this._scaleFactor;
|
|
196
|
+
}
|
|
197
|
+
set scaleFactor(scaleFactor) {
|
|
198
|
+
check(scaleFactor, Number);
|
|
199
|
+
if (scaleFactor !== this._scaleFactor) {
|
|
200
|
+
this._scaleFactor = scaleFactor;
|
|
201
|
+
this.styleChanged.raiseEvent();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
get template() {
|
|
205
|
+
return this._template;
|
|
206
|
+
}
|
|
207
|
+
setTemplate(template) {
|
|
208
|
+
check(template, oneOf(String, Function));
|
|
209
|
+
if (template !== this._template) {
|
|
210
|
+
this._template = template;
|
|
211
|
+
if (is(this._template, String)) {
|
|
212
|
+
this._templateFunction = createDefaultTemplateFunction(this._template);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this._templateFunction = this._template;
|
|
216
|
+
}
|
|
217
|
+
this.styleChanged.raiseEvent();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Finds the breaks index of a specified cluster size.
|
|
222
|
+
*/
|
|
223
|
+
findBreakIndex(size) {
|
|
224
|
+
const clusterTextIndex = this._breaks.findIndex((classBreak, i) => i > this._zeroScaleOffset ? size < classBreak : size <= classBreak);
|
|
225
|
+
return clusterTextIndex === -1 ? this._breaks.length : clusterTextIndex;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Gets the cluster text based on breaks and zeroScaleOffset. Adds a + to all sizes with an index larger then the zeroScaleOffset.
|
|
229
|
+
*/
|
|
230
|
+
getClusterText(size) {
|
|
231
|
+
if (size === 1) {
|
|
232
|
+
return '';
|
|
233
|
+
}
|
|
234
|
+
const clusterTextIndex = this.findBreakIndex(size);
|
|
235
|
+
let clusterText = this._breaks[clusterTextIndex > this._zeroScaleOffset
|
|
236
|
+
? clusterTextIndex - 1
|
|
237
|
+
: clusterTextIndex].toString();
|
|
238
|
+
if (clusterTextIndex > this._zeroScaleOffset) {
|
|
239
|
+
clusterText = `${clusterText}+`;
|
|
240
|
+
}
|
|
241
|
+
return clusterText;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Determines the scale based on break index and zeroScaleOffset. Cluster sizes with an index less then zeroScaleOffset
|
|
245
|
+
* are not scaled.
|
|
246
|
+
*/
|
|
247
|
+
determineScale(size) {
|
|
248
|
+
const index = this.findBreakIndex(size);
|
|
249
|
+
let indexScale = index - this._zeroScaleOffset;
|
|
250
|
+
indexScale = indexScale > 0 ? indexScale : 0;
|
|
251
|
+
return 0.6 + this._scaleFactor * indexScale;
|
|
252
|
+
}
|
|
253
|
+
createStyleFunction(getLayerByName) {
|
|
254
|
+
const styleFunction = (feature, resolution) => {
|
|
255
|
+
let features = [feature];
|
|
256
|
+
if (feature[vectorClusterGroupName]) {
|
|
257
|
+
features = feature.get('features') ?? [feature];
|
|
258
|
+
}
|
|
259
|
+
const size = features.length;
|
|
260
|
+
if (size > 1) {
|
|
261
|
+
const { template, cacheKey, context } = this._templateFunction(this, features, getLayerByName);
|
|
262
|
+
if (!this._styleCache.has(cacheKey)) {
|
|
263
|
+
try {
|
|
264
|
+
const src = `data:image/svg+xml,${encodeURIComponent(renderTemplate(template, {
|
|
265
|
+
// XXX document what parameters are past to the object
|
|
266
|
+
text: this.getClusterText(size),
|
|
267
|
+
fillColor: this._fillColor,
|
|
268
|
+
strokeColor: this._strokeColor,
|
|
269
|
+
strokeWidth: this._strokeWidth,
|
|
270
|
+
textColor: this._textColor,
|
|
271
|
+
font: this._font,
|
|
272
|
+
size,
|
|
273
|
+
...context,
|
|
274
|
+
}))}`;
|
|
275
|
+
const scale = this.determineScale(size);
|
|
276
|
+
this._styleCache.set(cacheKey, new Style({
|
|
277
|
+
image: new Icon({
|
|
278
|
+
src,
|
|
279
|
+
scale,
|
|
280
|
+
anchor: [0.5, 0.5], // XXX make configurable?
|
|
281
|
+
size: [64, 64], // XXX make configurable?
|
|
282
|
+
}),
|
|
283
|
+
}));
|
|
284
|
+
}
|
|
285
|
+
catch (e) {
|
|
286
|
+
this.getLogger().error('Error creating cluster style', e);
|
|
287
|
+
this._styleCache.set(cacheKey, new Style({}));
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return this._styleCache.get(cacheKey);
|
|
291
|
+
}
|
|
292
|
+
else if (size === 1) {
|
|
293
|
+
const singleFeature = features[0][originalFeatureSymbol] || features[0];
|
|
294
|
+
if (singleFeature[vcsLayerName]) {
|
|
295
|
+
const layer = getLayerByName(singleFeature[vcsLayerName]);
|
|
296
|
+
let style = singleFeature[highlighted]?.style ?? singleFeature.getStyle();
|
|
297
|
+
if (!style && layer) {
|
|
298
|
+
({ style } = layer.style);
|
|
299
|
+
}
|
|
300
|
+
if (style instanceof Style) {
|
|
301
|
+
return style;
|
|
302
|
+
}
|
|
303
|
+
if (typeof style === 'function') {
|
|
304
|
+
return style(singleFeature, resolution);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return undefined;
|
|
309
|
+
};
|
|
310
|
+
return styleFunction;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Clears the style cache to ensure new changes can take effect.
|
|
314
|
+
* @api
|
|
315
|
+
*/
|
|
316
|
+
clearCache() {
|
|
317
|
+
this._styleCache.clear();
|
|
318
|
+
}
|
|
319
|
+
toJSON() {
|
|
320
|
+
const config = super.toJSON();
|
|
321
|
+
const defaultOptions = VectorClusterStyleItem.getDefaultOptions();
|
|
322
|
+
if (this.template !== defaultOptions.template) {
|
|
323
|
+
config.template = this.template;
|
|
324
|
+
}
|
|
325
|
+
if (this.fillColor !== defaultOptions.fillColor) {
|
|
326
|
+
config.fillColor = this.fillColor;
|
|
327
|
+
}
|
|
328
|
+
if (this.strokeColor !== defaultOptions.strokeColor) {
|
|
329
|
+
config.strokeColor = this.strokeColor;
|
|
330
|
+
}
|
|
331
|
+
if (this.strokeWidth !== defaultOptions.strokeWidth) {
|
|
332
|
+
config.strokeWidth = this.strokeWidth;
|
|
333
|
+
}
|
|
334
|
+
if (this.textColor !== defaultOptions.textColor) {
|
|
335
|
+
config.textColor = this.textColor;
|
|
336
|
+
}
|
|
337
|
+
if (this.font !== defaultOptions.font) {
|
|
338
|
+
config.font = this.font;
|
|
339
|
+
}
|
|
340
|
+
const { breaks } = this;
|
|
341
|
+
if (breaks.length !== defaultOptions.breaks.length ||
|
|
342
|
+
breaks.some((b) => !defaultOptions.breaks.includes(b))) {
|
|
343
|
+
config.breaks = breaks;
|
|
344
|
+
}
|
|
345
|
+
if (this.zeroScaleOffset !== defaultOptions.zeroScaleOffset) {
|
|
346
|
+
config.zeroScaleOffset = this.zeroScaleOffset;
|
|
347
|
+
}
|
|
348
|
+
if (this.scaleFactor !== defaultOptions.scaleFactor) {
|
|
349
|
+
config.scaleFactor = this.scaleFactor;
|
|
350
|
+
}
|
|
351
|
+
return config;
|
|
352
|
+
}
|
|
353
|
+
equals(other) {
|
|
354
|
+
const thisJson = this.toJSON();
|
|
355
|
+
delete thisJson.name;
|
|
356
|
+
const otherJson = other.toJSON();
|
|
357
|
+
delete otherJson.name;
|
|
358
|
+
return deepEqual(thisJson, otherJson);
|
|
359
|
+
}
|
|
360
|
+
destroy() {
|
|
361
|
+
this.clearCache();
|
|
362
|
+
this.styleChanged.destroy();
|
|
363
|
+
super.destroy();
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
export function getDefaultClusterStyleItem() {
|
|
367
|
+
return new VectorClusterStyleItem({});
|
|
368
|
+
}
|
|
369
|
+
export function getDefaultClusterHighlightStyleItem() {
|
|
370
|
+
return new VectorClusterStyleItem({
|
|
371
|
+
fillColor: '#409D76',
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=vectorClusterStyleItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorClusterStyleItem.js","sourceRoot":"","sources":["../../../src/vectorCluster/vectorClusterStyleItem.ts"],"names":[],"mappings":"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"}
|