var customOverlays = {}; try { customOverlays = JSON.parse(localStorage["mapserver-customOverlays"]); } catch (e){} function save(){ localStorage["mapserver-customOverlays"] = JSON.stringify(customOverlays); } function onAddLayer(e){ customOverlays[e.name] = true; save(); } function onRemoveLayer(e){ customOverlays[e.name] = false; save(); } export default function(map, overlays){ Object.keys(customOverlays) .filter(name => overlays[name]) .forEach(name => { const layer = overlays[name]; if (customOverlays[name] && !map.hasLayer(layer)){ //Add map.addLayer(layer); } if (!customOverlays[name] && map.hasLayer(layer)){ //Remove map.removeLayer(layer); } }); map.on('unload', () => { map.off('overlayadd', onAddLayer); map.off('overlayremove', onRemoveLayer); }); map.on('overlayadd', onAddLayer); map.on('overlayremove', onRemoveLayer); }