remember user preference for tile layers across page reloads

This commit is contained in:
liamcottle
2024-04-17 22:38:32 +12:00
parent 1b00a05f4b
commit c0008a3278

View File

@ -1439,6 +1439,14 @@
return localStorage.setItem("config_enable_map_animations", value); return localStorage.setItem("config_enable_map_animations", value);
} }
function getConfigMapSelectedTileLayer() {
return localStorage.getItem("config_map_selected_tile_layer") || "OpenStreetMap";
}
function setConfigMapSelectedTileLayer(layer) {
return localStorage.setItem("config_map_selected_tile_layer", layer);
}
function getConfigMapEnabledOverlayLayers() { function getConfigMapEnabledOverlayLayers() {
try { try {
@ -2030,7 +2038,7 @@
var openStreetMapTileLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { var openStreetMapTileLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 22, // increase from 18 to 22 maxZoom: 22, // increase from 18 to 22
attribution: 'Tiles &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> | Data from <a target="_blank" href="https://meshtastic.org/docs/software/integrations/mqtt/">Meshtastic</a>', attribution: 'Tiles &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> | Data from <a target="_blank" href="https://meshtastic.org/docs/software/integrations/mqtt/">Meshtastic</a>',
}).addTo(map); });
var esriWorldImageryTileLayer = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', { var esriWorldImageryTileLayer = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {
maxZoom: 21, // esri doesn't have tiles closer than this maxZoom: 21, // esri doesn't have tiles closer than this
@ -2049,6 +2057,18 @@
attribution: 'Tiles &copy; Google | Data from <a target="_blank" href="https://meshtastic.org/docs/software/integrations/mqtt/">Meshtastic</a>' attribution: 'Tiles &copy; Google | Data from <a target="_blank" href="https://meshtastic.org/docs/software/integrations/mqtt/">Meshtastic</a>'
}); });
var tileLayers = {
"OpenStreetMap": openStreetMapTileLayer,
"Esri Satellite": esriWorldImageryTileLayer,
"Google Satellite": googleSatelliteTileLayer,
"Google Hybrid": googleHybridTileLayer,
};
// use tile layer based on config
const selectedTileLayerName = getConfigMapSelectedTileLayer();
const selectedTileLayer = tileLayers[selectedTileLayerName] || openStreetMapTileLayer;
selectedTileLayer.addTo(map);
// create layer groups // create layer groups
var nodesLayerGroup = new L.LayerGroup(); var nodesLayerGroup = new L.LayerGroup();
var neighboursLayerGroup = new L.LayerGroup(); var neighboursLayerGroup = new L.LayerGroup();
@ -2089,12 +2109,10 @@
return div; return div;
}; };
var tileLayers = { // handle baselayerchange to update tile layer preference
"OpenStreetMap": openStreetMapTileLayer, map.on('baselayerchange', function(event) {
"Esri Satellite": esriWorldImageryTileLayer, setConfigMapSelectedTileLayer(event.name);
"Google Satellite": googleSatelliteTileLayer, });
"Google Hybrid": googleHybridTileLayer,
};
// handle adding/remove legend on map (can't use L.Control as an overlay, so we toggle an empty L.LayerGroup) // handle adding/remove legend on map (can't use L.Control as an overlay, so we toggle an empty L.LayerGroup)
map.on('overlayadd overlayremove', function(event) { map.on('overlayadd overlayremove', function(event) {