From 53b0ace4c0577385af71394f03e2f4e2fb810f77 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 20 Jul 2010 18:21:54 +0100 Subject: [PATCH] Remove maplint layer fron the map Remove the maplint layer from the map and change the way layers are encoded in URLs to make links more robust when the available layers are changed. --- public/javascripts/map.js | 73 +++++++++++++++++------------- public/openlayers/OpenStreetMap.js | 28 ------------ 2 files changed, 42 insertions(+), 59 deletions(-) diff --git a/public/javascripts/map.js b/public/javascripts/map.js index fd45d9304..6fcfdf120 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -34,21 +34,24 @@ function createMap(divName, options) { var mapnik = new OpenLayers.Layer.OSM.Mapnik(i18n("javascripts.map.base.mapnik"), { keyid: "mapnik", displayOutsideMaxExtent: true, - wrapDateLine: true + wrapDateLine: true, + layerCode: "M" }); map.addLayer(mapnik); var osmarender = new OpenLayers.Layer.OSM.Osmarender(i18n("javascripts.map.base.osmarender"), { keyid: "osmarender", displayOutsideMaxExtent: true, - wrapDateLine: true + wrapDateLine: true, + layerCode: "O" }); map.addLayer(osmarender); var cyclemap = new OpenLayers.Layer.OSM.CycleMap(i18n("javascripts.map.base.cycle_map"), { keyid: "cyclemap", displayOutsideMaxExtent: true, - wrapDateLine: true + wrapDateLine: true, + layerCode: "C" }); map.addLayer(cyclemap); @@ -60,16 +63,11 @@ function createMap(divName, options) { ], { displayOutsideMaxExtent: true, wrapDateLine: true, - numZoomLevels: 19 + numZoomLevels: 19, + layerCode: "N" }); map.addLayer(noname); - var maplint = new OpenLayers.Layer.OSM.Maplint(i18n("javascripts.map.overlays.maplint"), { - displayOutsideMaxExtent: true, - wrapDateLine: true - }); - map.addLayer(maplint); - var numZoomLevels = Math.max(mapnik.numZoomLevels, osmarender.numZoomLevels); markers = new OpenLayers.Layer.Markers("Markers", { @@ -226,39 +224,52 @@ function getEventPosition(event) { function getMapLayers() { var layerConfig = ""; - for (var layers = map.getLayersBy("isBaseLayer", true), i = 0; i < layers.length; i++) { - layerConfig += layers[i] == map.baseLayer ? "B" : "0"; - } - - for (var layers = map.getLayersBy("isBaseLayer", false), i = 0; i < layers.length; i++) { - layerConfig += layers[i].getVisibility() ? "T" : "F"; + for (var i = 0; i < map.layers.length; i++) { + if (map.layers[i].layerCode && map.layers[i].getVisibility()) { + layerConfig += map.layers[i].layerCode; + } } return layerConfig; } function setMapLayers(layerConfig) { - var l = 0; + if (layerConfig.charAt(0) == "B" || layerConfig.charAt(0) == "0") { + var l = 0; - for (var layers = map.getLayersBy("isBaseLayer", true), i = 0; i < layers.length; i++) { - var c = layerConfig.charAt(l++); + for (var layers = map.getLayersBy("isBaseLayer", true), i = 0; i < layers.length; i++) { + var c = layerConfig.charAt(l++); - if (c == "B") { - map.setBaseLayer(layers[i]); + if (c == "B") { + map.setBaseLayer(layers[i]); + } } - } - while (layerConfig.charAt(l) == "B" || layerConfig.charAt(l) == "0") { - l++; - } + while (layerConfig.charAt(l) == "B" || layerConfig.charAt(l) == "0") { + l++; + } - for (var layers = map.getLayersBy("isBaseLayer", false), i = 0; i < layers.length; i++) { - var c = layerConfig.charAt(l++); + for (var layers = map.getLayersBy("isBaseLayer", false), i = 0; i < layers.length; i++) { + var c = layerConfig.charAt(l++); - if (c == "T") { - layers[i].setVisibility(true); - } else if(c == "F") { - layers[i].setVisibility(false); + if (c == "T") { + layers[i].setVisibility(true); + } else if(c == "F") { + layers[i].setVisibility(false); + } + } + } else { + for (var i = 0; i < map.layers.length; i++) { + if (map.layers[i].layerCode && + layerConfig.indexOf(map.layers[i].layerCode) >= 0) { + if (map.layers[i].isBaseLayer) { + map.setBaseLayer(map.layers[i]); + } else { + map.layers[i].setVisibility(true); + } + } else { + map.layers[i].setVisibility(false); + } } } } diff --git a/public/openlayers/OpenStreetMap.js b/public/openlayers/OpenStreetMap.js index ce8a6e81f..69f141806 100644 --- a/public/openlayers/OpenStreetMap.js +++ b/public/openlayers/OpenStreetMap.js @@ -111,31 +111,3 @@ OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, { CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap" }); - -/** - * Class: OpenLayers.Layer.OSM.Maplint - * - * Inherits from: - * - - */ -OpenLayers.Layer.OSM.Maplint = OpenLayers.Class(OpenLayers.Layer.OSM, { - /** - * Constructor: OpenLayers.Layer.OSM.Maplint - * - * Parameters: - * name - {String} - * options - {Object} Hashtable of extra options to tag onto the layer - */ - initialize: function(name, options) { - var url = [ - "http://d.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png", - "http://e.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png", - "http://f.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png" - ]; - options = OpenLayers.Util.extend({ numZoomLevels: 18, isBaseLayer: false, visibility: false }, options); - var newArguments = [name, url, options]; - OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments); - }, - - CLASS_NAME: "OpenLayers.Layer.OSM.Maplint" -}); -- 2.43.2