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.
This commit is contained in:
Tom Hughes 2010-07-20 18:21:54 +01:00
parent 84b39122f1
commit 53b0ace4c0
2 changed files with 42 additions and 59 deletions

View file

@ -34,21 +34,24 @@ function createMap(divName, options) {
var mapnik = new OpenLayers.Layer.OSM.Mapnik(i18n("javascripts.map.base.mapnik"), { var mapnik = new OpenLayers.Layer.OSM.Mapnik(i18n("javascripts.map.base.mapnik"), {
keyid: "mapnik", keyid: "mapnik",
displayOutsideMaxExtent: true, displayOutsideMaxExtent: true,
wrapDateLine: true wrapDateLine: true,
layerCode: "M"
}); });
map.addLayer(mapnik); map.addLayer(mapnik);
var osmarender = new OpenLayers.Layer.OSM.Osmarender(i18n("javascripts.map.base.osmarender"), { var osmarender = new OpenLayers.Layer.OSM.Osmarender(i18n("javascripts.map.base.osmarender"), {
keyid: "osmarender", keyid: "osmarender",
displayOutsideMaxExtent: true, displayOutsideMaxExtent: true,
wrapDateLine: true wrapDateLine: true,
layerCode: "O"
}); });
map.addLayer(osmarender); map.addLayer(osmarender);
var cyclemap = new OpenLayers.Layer.OSM.CycleMap(i18n("javascripts.map.base.cycle_map"), { var cyclemap = new OpenLayers.Layer.OSM.CycleMap(i18n("javascripts.map.base.cycle_map"), {
keyid: "cyclemap", keyid: "cyclemap",
displayOutsideMaxExtent: true, displayOutsideMaxExtent: true,
wrapDateLine: true wrapDateLine: true,
layerCode: "C"
}); });
map.addLayer(cyclemap); map.addLayer(cyclemap);
@ -60,16 +63,11 @@ function createMap(divName, options) {
], { ], {
displayOutsideMaxExtent: true, displayOutsideMaxExtent: true,
wrapDateLine: true, wrapDateLine: true,
numZoomLevels: 19 numZoomLevels: 19,
layerCode: "N"
}); });
map.addLayer(noname); 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); var numZoomLevels = Math.max(mapnik.numZoomLevels, osmarender.numZoomLevels);
markers = new OpenLayers.Layer.Markers("Markers", { markers = new OpenLayers.Layer.Markers("Markers", {
@ -226,39 +224,52 @@ function getEventPosition(event) {
function getMapLayers() { function getMapLayers() {
var layerConfig = ""; var layerConfig = "";
for (var layers = map.getLayersBy("isBaseLayer", true), i = 0; i < layers.length; i++) { for (var i = 0; i < map.layers.length; i++) {
layerConfig += layers[i] == map.baseLayer ? "B" : "0"; if (map.layers[i].layerCode && map.layers[i].getVisibility()) {
} layerConfig += map.layers[i].layerCode;
}
for (var layers = map.getLayersBy("isBaseLayer", false), i = 0; i < layers.length; i++) {
layerConfig += layers[i].getVisibility() ? "T" : "F";
} }
return layerConfig; return layerConfig;
} }
function setMapLayers(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++) { for (var layers = map.getLayersBy("isBaseLayer", true), i = 0; i < layers.length; i++) {
var c = layerConfig.charAt(l++); var c = layerConfig.charAt(l++);
if (c == "B") { if (c == "B") {
map.setBaseLayer(layers[i]); map.setBaseLayer(layers[i]);
}
} }
}
while (layerConfig.charAt(l) == "B" || layerConfig.charAt(l) == "0") { while (layerConfig.charAt(l) == "B" || layerConfig.charAt(l) == "0") {
l++; l++;
} }
for (var layers = map.getLayersBy("isBaseLayer", false), i = 0; i < layers.length; i++) { for (var layers = map.getLayersBy("isBaseLayer", false), i = 0; i < layers.length; i++) {
var c = layerConfig.charAt(l++); var c = layerConfig.charAt(l++);
if (c == "T") { if (c == "T") {
layers[i].setVisibility(true); layers[i].setVisibility(true);
} else if(c == "F") { } else if(c == "F") {
layers[i].setVisibility(false); 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);
}
} }
} }
} }

View file

@ -111,31 +111,3 @@ OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap" CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap"
}); });
/**
* Class: OpenLayers.Layer.OSM.Maplint
*
* Inherits from:
* - <OpenLayers.Layer.OSM>
*/
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"
});