diff --git a/public_html/script.js b/public_html/script.js index 09d19fb..ce7bd99 100644 --- a/public_html/script.js +++ b/public_html/script.js @@ -366,27 +366,74 @@ function initialize_map() { document.getElementById("infoblock_country").style.display = 'none'; // hide country row } - // Initialize OL3 + // Initialize OL3 var layers = createBaseLayers(); + + var iconsLayer = new ol.layer.Vector({ + name: 'ac_positions', + type: 'overlay', + title: 'Aircraft positions', + source: new ol.source.Vector({ + features: PlaneIconFeatures, + }) + }); + + layers.push(new ol.layer.Group({ + title: 'Overlays', + layers: [ + new ol.layer.Vector({ + name: 'site_pos', + type: 'overlay', + title: 'Site position and range rings', + source: new ol.source.Vector({ + features: StaticFeatures, + }) + }), + + new ol.layer.Vector({ + name: 'ac_trail', + type: 'overlay', + title: 'Selected aircraft trail', + source: new ol.source.Vector({ + features: PlaneTrailFeatures, + }) + }), + + iconsLayer + ] + })); + var foundType = false; ol.control.LayerSwitcher.forEachRecursive(layers, function(lyr) { - if (lyr.get('type') !== 'base') + if (!lyr.get('name')) return; - if (MapType === lyr.get('name')) { - foundType = true; - lyr.setVisible(true); - } else { - lyr.setVisible(false); - } - - lyr.on('change:visible', function(evt) { - if (evt.target.getVisible()) { - MapType = localStorage['MapType'] = evt.target.get('name'); + if (lyr.get('type') === 'base') { + if (MapType === lyr.get('name')) { + foundType = true; + lyr.setVisible(true); + } else { + lyr.setVisible(false); } - }); + + lyr.on('change:visible', function(evt) { + if (evt.target.getVisible()) { + MapType = localStorage['MapType'] = evt.target.get('name'); + } + }); + } else if (lyr.get('type') === 'overlay') { + var visible = localStorage['layer_' + lyr.get('name')]; + if (visible != undefined) { + // javascript, why must you taunt me with gratuitous type problems + lyr.setVisible(visible === "true"); + } + + lyr.on('change:visible', function(evt) { + localStorage['layer_' + evt.target.get('name')] = evt.target.getVisible(); + }); + } }) if (!foundType) { @@ -400,35 +447,7 @@ function initialize_map() { }); } - var iconsLayer = new ol.layer.Vector({ - title: 'Aircraft positions', - source: new ol.source.Vector({ - features: PlaneIconFeatures, - }) - }); - - layers.push(new ol.layer.Group({ - title: 'Overlays', - layers: [ - new ol.layer.Vector({ - title: 'Site position and range rings', - source: new ol.source.Vector({ - features: StaticFeatures, - }) - }), - - new ol.layer.Vector({ - title: 'Selected aircraft trail', - source: new ol.source.Vector({ - features: PlaneTrailFeatures, - }) - }), - - iconsLayer - ] - })); - - OLMap = new ol.Map({ + OLMap = new ol.Map({ target: 'map_canvas', layers: layers, view: new ol.View({