From 124c6fe4ded8e7964847bcfbb5d431aabbca5c35 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Thu, 16 Nov 2023 12:27:33 +0100 Subject: [PATCH] Remember zoom and pan between browser sessions --- spatial/static/spatial/js/gridmap.js | 43 +++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/spatial/static/spatial/js/gridmap.js b/spatial/static/spatial/js/gridmap.js index 10fb6a76..2f0fadf4 100644 --- a/spatial/static/spatial/js/gridmap.js +++ b/spatial/static/spatial/js/gridmap.js @@ -193,13 +193,30 @@ msLoadMap(): Unable to access file. (/disks/data01/mapserver/wms/SEPTREFFUM/SEPT setCurrentDate(todayLayerIndex); switchLayer(todayLayerIndex); - // Zoom and center the map to fit to the extent of the WMS layer. - // If the current WMS layer has a lot of no-data / invisible values surrounding the - // visible values, the zoom might appear to be a bit too far out - let currentWMSLayer = WMSLayersDateBucket[currentTimestamp][currentParameter] - let WMSExtent = currentWMSLayer.EX_GeographicBoundingBox; - let extent = ol.proj.transformExtent(WMSExtent, getCurrentVisibleOLLayer().getSource().getProjection().getCode(), map.getView().getProjection()); - map.getView().fit(extent, map.getSize()); + var storedMapSettings = getLocalSettings([ + "gridmap.longitude", + "gridmap.latitude", + "gridmap.zoomLevel"], + true); + if(storedMapSettings != null) + { + longitude = parseFloat(storedMapSettings["gridmap.longitude"]); + latitude = parseFloat(storedMapSettings["gridmap.latitude"]); + let lonLat=[longitude,latitude]; + zoomLevel = parseInt(storedMapSettings["gridmap.zoomLevel"]); + map.getView().setCenter(ol.proj.transform(lonLat, 'EPSG:4326', map.getView().getProjection().getCode())); + map.getView().setZoom(zoomLevel); + } + else + { + // Zoom and center the map to fit to the extent of the WMS layer. + // If the current WMS layer has a lot of no-data / invisible values surrounding the + // visible values, the zoom might appear to be a bit too far out + let currentWMSLayer = WMSLayersDateBucket[currentTimestamp][currentParameter] + let WMSExtent = currentWMSLayer.EX_GeographicBoundingBox; + let extent = ol.proj.transformExtent(WMSExtent, getCurrentVisibleOLLayer().getSource().getProjection().getCode(), map.getView().getProjection()); + map.getView().fit(extent, map.getSize()); + } popup = new ol.Overlay({ element: document.getElementById('popup') @@ -208,6 +225,17 @@ msLoadMap(): Unable to access file. (/disks/data01/mapserver/wms/SEPTREFFUM/SEPT map.on('singleclick', displayQueryResult); + map.on('moveend', function(evt) { + // Store map settings + var centerCoordinate = ol.proj.transform(map.getView().getCenter(), map.getView().getProjection().getCode(),'EPSG:4326'); + var settings = { + "gridmap.longitude": centerCoordinate[0], + "gridmap.latitude": centerCoordinate[1], + "gridmap.zoomLevel": map.getView().getZoom() + }; + storeLocalSettings(settings); + }); + // Add the parameter selector let radioHTML = ""; for(let i=0;i<parameters.length;i++) @@ -250,6 +278,7 @@ async function displayQueryResult(evt) let response = await fetch(url); let responseXML = await response.text(); + console.info(responseXML); // User clicked outside of layer extent if(responseXML.trim().length == 0) { -- GitLab