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 @@