From 75a776a574cd6a711c0b4bf854701646c37c391c Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 10 Jun 2013 15:49:07 -0700 Subject: [PATCH] Refactor layer persistence --- app/assets/javascripts/index.js | 45 +++++++++++------------ app/assets/javascripts/index/notes.js.erb | 10 +---- 2 files changed, 23 insertions(+), 32 deletions(-) diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index d50253318..404119134 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -24,31 +24,31 @@ $(document).ready(function () { layers = [{ layer: new L.OSM.Mapnik({ - attribution: '' + attribution: '', + code: "M" }), keyid: "mapnik", - layerCode: "M", name: I18n.t("javascripts.map.base.standard") }, { layer: new L.OSM.CycleMap({ attribution: "Tiles courtesy of Andy Allan", + code: "C" }), keyid: "cyclemap", - layerCode: "C", name: I18n.t("javascripts.map.base.cycle_map") }, { layer: new L.OSM.TransportMap({ attribution: "Tiles courtesy of Andy Allan", + code: "T" }), keyid: "transportmap", - layerCode: "T", name: I18n.t("javascripts.map.base.transport_map") }, { layer: new L.OSM.MapQuestOpen({ attribution: "Tiles courtesy of MapQuest ", + code: "Q" }), keyid: "mapquest", - layerCode: "Q", name: I18n.t("javascripts.map.base.mapquest") }]; @@ -100,7 +100,18 @@ $(document).ready(function () { } if (params.layers) { - setMapLayers(params.layers); + var foundLayer = false; + for (var i = 0; i < layers.length; i++) { + if (params.layers.indexOf(layers[i].layer.options.code) >= 0) { + map.addLayer(layers[i].layer); + foundLayer = true; + } else { + map.removeLayer(layers[i].layer); + } + } + if (!foundLayer) { + map.addLayer(layers[0].layer); + } } if (params.marker) { @@ -214,25 +225,11 @@ function getMapBaseLayer() { function getMapLayers() { var layerConfig = ""; - for (var i = 0; i < layers.length; i++) { - if (map.hasLayer(layers[i].layer)) { - layerConfig += layers[i].layerCode; + for (var i in map._layers) { // TODO: map.eachLayer + var layer = map._layers[i]; + if (layer.options && layer.options.code) { + layerConfig += layer.options.code; } } return layerConfig; } - -function setMapLayers(layerConfig) { - var foundLayer = false; - for (var i = 0; i < layers.length; i++) { - if (layerConfig.indexOf(layers[i].layerCode) >= 0) { - map.addLayer(layers[i].layer); - foundLayer = true; - } else { - map.removeLayer(layers[i].layer); - } - } - if (!foundLayer) { - map.addLayer(layers[0].layer); - } -} diff --git a/app/assets/javascripts/index/notes.js.erb b/app/assets/javascripts/index/notes.js.erb index ac73e1378..81d6042c7 100644 --- a/app/assets/javascripts/index/notes.js.erb +++ b/app/assets/javascripts/index/notes.js.erb @@ -3,7 +3,7 @@ $(document).ready(function () { var params = OSM.mapParams(), - noteLayer = new L.LayerGroup(), + noteLayer = new L.LayerGroup({code: 'N'}), notes = {}, newNote; @@ -25,11 +25,6 @@ $(document).ready(function () { }) }; - layers.push({ - layer: noteLayer, - layerCode: "N" - }); - map.noteLayer = noteLayer; map.on("layeradd", function (e) { @@ -57,8 +52,7 @@ $(document).ready(function () { }); if (OSM.STATUS != 'api_offline' && OSM.STATUS != 'database_offline') { - if (params.layers) setMapLayers(params.layers); - if (params.notes) map.addLayer(noteLayer); + if (params.notes || params.layers.indexOf('N') >= 0) map.addLayer(noteLayer); if (params.note) { $.ajax({ url: "/api/" + OSM.API_VERSION + "/notes/" + params.note + ".json", -- 2.43.2