diff client/src/components/map/Maplayer.vue @ 1313:e4e35fb2d995

save map extent (center/zoom) in store, to not lose it when switching between map and admin area
author Markus Kottlaender <markus@intevation.de>
date Fri, 23 Nov 2018 15:18:14 +0100
parents 99c039e86624
children ca33ad696594
line wrap: on
line diff
--- a/client/src/components/map/Maplayer.vue	Fri Nov 23 13:57:31 2018 +0100
+++ b/client/src/components/map/Maplayer.vue	Fri Nov 23 15:18:14 2018 +0100
@@ -50,7 +50,7 @@
 /* eslint-disable no-console */
 export default {
   name: "maplayer",
-  props: ["lat", "long", "zoom", "split"],
+  props: ["split"],
   data() {
     return {
       projection: "EPSG:3857"
@@ -59,6 +59,7 @@
   computed: {
     ...mapGetters("map", ["getLayerByName"]),
     ...mapState("map", [
+      "extent",
       "layers",
       "openLayersMap",
       "lineTool",
@@ -261,11 +262,19 @@
       target: "map",
       controls: [],
       view: new View({
-        center: [this.long, this.lat],
-        zoom: this.zoom,
+        center: [this.extent.lon, this.extent.lat],
+        zoom: this.extent.zoom,
         projection: this.projection
       })
     });
+    map.on("moveend", event => {
+      const center = event.map.getView().getCenter();
+      this.$store.commit("map/extent", {
+        lat: center[1],
+        lon: center[0],
+        zoom: event.map.getView().getZoom()
+      });
+    });
     this.$store.dispatch("map/openLayersMap", map);
 
     // TODO make display of layers more dynamic, e.g. from a list