From b2b510d4ee1f3c1732998dca8730c896948fc7a2 Mon Sep 17 00:00:00 2001
From: peer35
Date: Tue, 25 Aug 2020 15:38:34 +0200
Subject: [PATCH] clustering refinement #28
---
src/components/shared/ol/Map.vue | 50 ++++++++++++++++++--------------
1 file changed, 29 insertions(+), 21 deletions(-)
diff --git a/src/components/shared/ol/Map.vue b/src/components/shared/ol/Map.vue
index 4e3e31a..d374b9a 100644
--- a/src/components/shared/ol/Map.vue
+++ b/src/components/shared/ol/Map.vue
@@ -97,25 +97,6 @@
this.map.getTargetElement().style.cursor = this.map.hasFeatureAtPixel(this.map.getEventPixel(evt.originalEvent)) ? 'pointer' : '';
}
});
- let view = this.map.getView();
- let zoom = view.getZoom();
- let clustered = true;
- if (zoom >= me.$config.cluster_zoomlevel) {
- clustered = false;
- me.updateClusters(false);
- }
- view.on('change:resolution', function () {
- if (view.getZoom() % 1 == 0) {
- let zoom = view.getZoom();
- if (zoom >= me.$config.cluster_zoomlevel && clustered) {
- clustered = false;
- me.updateClusters(false);
- } else if (zoom < me.$config.cluster_zoomlevel && !clustered) {
- clustered = true;
- me.updateClusters(true);
- }
- }
- });
},
created() {
console.log('map created');
@@ -140,22 +121,49 @@
view.fit(transformExtent(config.bbox, 'EPSG:4326', view.getProjection()), this.map.getSize());
this.map.setView(view);
-
+ this.setViewOptions(view);
this.addBaseLayers(config.available_crs);
console.log('start adding layers');
this.addLayers(config);
},
+ setViewOptions: function(view){
+ let me=this;
+ let resolution = view.getResolution();
+ let clustered = true;
+ if (resolution < me.$config.cluster_resolution) {
+ clustered = false;
+ me.updateClusters(false);
+ }
+ view.on('change:resolution', function () {
+ const zoom = view.getZoom();
+ const resolution = view.getResolution();
+
+ if (zoom % 1 == 0) {
+ console.log(resolution);
+ if (resolution < me.$config.cluster_resolution && clustered) {
+ clustered = false;
+ me.updateClusters(false);
+ } else if (resolution > me.$config.cluster_resolution && !clustered) {
+ clustered = true;
+ me.updateClusters(true);
+ }
+ }
+ });
+ },
reProject: function (crs) {
console.log('reproject to ' + crs);
const curview = this.map.getView(this.map.getSize());
const extent = transformExtent(curview.calculateExtent(), curview.getProjection().getCode(), crs);
const view = new View({
- projection: crs
+ projection: crs,
+ enableRotation: false,
+ constrainResolution: true // keep this or clustering updates break
});
view.fit(extent, {size: this.map.getSize(), nearest: true});
this.clearVectorLayers();
this.map.setView(view);
+ this.setViewOptions(view);
},
clearVectorLayers() {
var layers = this.map.getLayers();