From fae6e858b76f1b37d2701daf192936bc5561921c Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Sat, 24 Nov 2018 17:31:55 +0100 Subject: [PATCH] map: Also include map layer in URL So far, only the overlay layers had been included. Signed-off-by: Adrian Schmutzler --- ffmap/web/static/js/map.js | 22 +++++++++++++++++++++- ffmap/web/templates/map.html | 25 ++++++++++++++++--------- ffmap/web/templates/router.html | 1 + 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/ffmap/web/static/js/map.js b/ffmap/web/static/js/map.js index 2ae3933..7a8aabe 100644 --- a/ffmap/web/static/js/map.js +++ b/ffmap/web/static/js/map.js @@ -5,7 +5,6 @@ var tilesosmorg = new L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y maxNativeZoom: 19, maxZoom: 22 }); -map.addLayer(tilesosmorg); var tilesosmde = new L.TileLayer('https://{s}.osm.rrze.fau.de/osmde/{z}/{x}/{y}.png', { attribution: '© Openstreetmap Contributors', maxNativeZoom: 19, @@ -64,6 +63,7 @@ function update_permalink() { var zoom = map.getZoom(); window.history.replaceState({}, document.title, mapurl + '?mapcenter=' + pos.lat.toFixed(5) + ',' + pos.lng.toFixed(5) + ',' + zoom + + '&source=' + (map.hasLayer(tilesosmorg) ? 1 : (map.hasLayer(tilesosmde) ? 2 : 3)) + '&layers=' + (map.hasLayer(routers)|0) + ',' + (map.hasLayer(routers_v2)|0) + ',' + (map.hasLayer(routers_local)|0) + ',' @@ -75,16 +75,36 @@ function update_permalink() { } } +function initialMap() { + map.addLayer(tilesosmorg); +} function initialLayers() { routers.addTo(map); routers_v2.addTo(map); routers_local.addTo(map); } +function setupMap(getargs) { + var getsrc = getargs.replace("source=", ""); + if(getsrc==2) { map.addLayer(tilesosmde); } + else if(getsrc==3) { map.addLayer(tilestfod); } + else { map.addLayer(tilesosmorg); } +} +function setupLayers(getargs) { + var getlayers = getargs.replace("layers=", "").split(","); + if(getlayers[0]==1) { routers.addTo(map); } + if(getlayers[1]==1) { routers_v2.addTo(map); } + if(getlayers[2]==1) { routers_local.addTo(map); } + if(getlayers[3]==1) { hoods.addTo(map); } + if(getlayers[4]==1) { hoods_v2.addTo(map); } + if(getlayers[5]==1) { hoods_poly.addTo(map); } + if(getlayers[6]==1) { popuplayer.addTo(map); } +} map.on('moveend', update_permalink); map.on('zoomend', update_permalink); map.on('overlayadd', update_permalink); map.on('overlayremove', update_permalink); +map.on('baselayerchange', update_permalink); map.on('click', function(pos) { // height = width of world in px diff --git a/ffmap/web/templates/map.html b/ffmap/web/templates/map.html index 278e49c..d264fc0 100644 --- a/ffmap/web/templates/map.html +++ b/ffmap/web/templates/map.html @@ -36,21 +36,28 @@ var getargs = window.location.search.replace("?mapcenter=", "").split("&"); var maploc = getargs[0].split(","); map.setView([maploc[0], maploc[1]], maploc[2]); - if (getargs.length > 1 && getargs[1].match("layers=")) { - var getlayers = getargs[1].replace("layers=", "").split(","); - if(getlayers[0]==1) { routers.addTo(map); } - if(getlayers[1]==1) { routers_v2.addTo(map); } - if(getlayers[2]==1) { routers_local.addTo(map); } - if(getlayers[3]==1) { hoods.addTo(map); } - if(getlayers[4]==1) { hoods_v2.addTo(map); } - if(getlayers[5]==1) { hoods_poly.addTo(map); } - if(getlayers[6]==1) { popuplayer.addTo(map); } + if (getargs.length > 1 && getargs[1].match("source=")) { + setupMap(getargs[1]); + if (getargs.length > 2 && getargs[2].match("layers=")) { + setupLayers(getargs[2]); + } else { + initialLayers(); + } + } else if (getargs.length > 1 && getargs[1].match("layers=")) { + setupLayers(getargs[1]); + if (getargs.length > 2 && getargs[2].match("source=")) { + setupMap(getargs[2]); + } else { + initialMap(); + } } else { + initialMap(); initialLayers(); } } else { map.setView([49.824, 10.786], 9); + initialMap(); initialLayers(); } diff --git a/ffmap/web/templates/router.html b/ffmap/web/templates/router.html index c447491..f3c0b8e 100644 --- a/ffmap/web/templates/router.html +++ b/ffmap/web/templates/router.html @@ -90,6 +90,7 @@