From 44bd2721972f33d666fa1bac1cc1ad3f93b1bd0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e?= <tpoussard@neogeo.fr>
Date: Thu, 21 Jul 2022 16:16:20 +0200
Subject: [PATCH] initiate maps with maxZoom from project config

---
 src/services/map-service.js              | 16 ++++++++++------
 src/store/modules/map.store.js           |  3 ++-
 src/views/Feature/FeatureDetail.vue      |  1 +
 src/views/Feature/FeatureEdit.vue        |  1 +
 src/views/Project/FeaturesListAndMap.vue |  1 +
 5 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/services/map-service.js b/src/services/map-service.js
index 0bb14fa3..c64c318d 100644
--- a/src/services/map-service.js
+++ b/src/services/map-service.js
@@ -51,6 +51,7 @@ const mapService = {
       lng,
       mapDefaultViewCenter,
       mapDefaultViewZoom,
+      maxZoom,
       zoom,
       zoomControl = true,
       interactions = { doubleClickZoom: false, mouseWheelZoom: false, dragPan: true },
@@ -60,7 +61,7 @@ const mapService = {
       el.innerHTML = '';
     }
 
-    this.map = new Map({
+    const mapOptions = {
       layers: [],
       target: el,
       controls: [
@@ -70,14 +71,17 @@ const mapService = {
         })],
       interactions: defaults(interactions),
       view: new View({
-        center: transform([
-          !lng ? mapDefaultViewCenter[1] : lng,
-          !lat ? mapDefaultViewCenter[0] : lat,
+        center: transform([ //* since 0 is considered false, check for number instead of just defined (though boolean will pass through)
+          Number(lng) ? lng : mapDefaultViewCenter[1],
+          Number(lat) ? lat : mapDefaultViewCenter[0],
 
         ], 'EPSG:4326', 'EPSG:3857'),
-        zoom: !zoom ? mapDefaultViewZoom : zoom
+        zoom: Number(mapDefaultViewZoom) ? mapDefaultViewZoom : zoom,
+        maxZoom
       }),
-    });
+    };
+
+    this.map = new Map(mapOptions);
 
     if (zoomControl) {
       this.map.addControl(new Zoom({ zoomInTipLabel: 'Zoomer', zoomOutTipLabel: 'Dézoomer' }));
diff --git a/src/store/modules/map.store.js b/src/store/modules/map.store.js
index a8b3f37b..3ae79943 100644
--- a/src/store/modules/map.store.js
+++ b/src/store/modules/map.store.js
@@ -104,12 +104,13 @@ const map = {
         });
     },
 
-    INITIATE_MAP({ commit }, el) { //todo: since this function is not anymore called in different components, it would better to move it in project_details.vue
+    INITIATE_MAP({ commit, rootState }, el) { //todo: since this function is not anymore called in different components, it would better to move it in project_details.vue
       const mapDefaultViewCenter = [46, 2]; // defaultMapView.center;
       const mapDefaultViewZoom = 5; // defaultMapView.zoom;
       mapService.createMap(el, {
         mapDefaultViewCenter: mapDefaultViewCenter,
         mapDefaultViewZoom: mapDefaultViewZoom,
+        maxZoom: rootState.projects.project.map_max_zoom_level,
       });
       const map = { ...mapService.getMap() };
       commit('SET_MAP', map);
diff --git a/src/views/Feature/FeatureDetail.vue b/src/views/Feature/FeatureDetail.vue
index dc39b0e4..6926b849 100644
--- a/src/views/Feature/FeatureDetail.vue
+++ b/src/views/Feature/FeatureDetail.vue
@@ -354,6 +354,7 @@ export default {
       this.map = mapService.createMap(this.$refs.map, {
         mapDefaultViewCenter,
         mapDefaultViewZoom,
+        maxZoom: this.project.map_max_zoom_level,
         interactions : {
           doubleClickZoom :false,
           mouseWheelZoom: false,
diff --git a/src/views/Feature/FeatureEdit.vue b/src/views/Feature/FeatureEdit.vue
index ce393803..68b7a5d3 100644
--- a/src/views/Feature/FeatureEdit.vue
+++ b/src/views/Feature/FeatureEdit.vue
@@ -860,6 +860,7 @@ export default {
       this.map = mapService.createMap(this.$refs.map, {
         mapDefaultViewCenter,
         mapDefaultViewZoom,
+        maxZoom: this.project.map_max_zoom_level,
         interactions : { doubleClickZoom :false, mouseWheelZoom:true, dragPan:true }
       });
       const currentFeatureId = this.$route.params.slug_signal;
diff --git a/src/views/Project/FeaturesListAndMap.vue b/src/views/Project/FeaturesListAndMap.vue
index f86c9244..fde352a9 100644
--- a/src/views/Project/FeaturesListAndMap.vue
+++ b/src/views/Project/FeaturesListAndMap.vue
@@ -303,6 +303,7 @@ export default {
         lng: this.lng,
         mapDefaultViewCenter,
         mapDefaultViewZoom,
+        maxZoom: this.project.map_max_zoom_level,
         interactions : { doubleClickZoom :false,mouseWheelZoom:true,dragPan:true }
       });
 
-- 
GitLab