make layers an array
this simplifies the code, make the configuration more intuitive, at the cost of making the labels on the layers automatically generated and therefore less customizablemaster
parent
c7070ddd48
commit
636e04a13a
|
@ -69,17 +69,8 @@ sub getsetup () {
|
|||
},
|
||||
osm_layers => {
|
||||
type => "string",
|
||||
example => { OSM => 1,
|
||||
Google => 'Hybrid',
|
||||
},
|
||||
description => "Layers to use in the map. If the value is 1, use the default for the map, otherwise the argument is a URL (for OSM layers, e.g. http://a.tile.stamen.com/toner/\${z}/\${x}/\${y}.png) or a type option for Google maps (Normal, Satellite, Hybrid or Physical).",
|
||||
safe => 0,
|
||||
rebuild => 1,
|
||||
},
|
||||
osm_layers_order => {
|
||||
type => "string",
|
||||
example => { 'OSM', 'Google' },
|
||||
description => "Display order for the layers. The first layer is the default layer, must match exactly the left side of the osm_layers hash.",
|
||||
example => { 'OSM', 'GoogleSattelite' },
|
||||
description => "Layers to use in the map. Can be either the 'OSM' string or a type option for Google maps (GoogleNormal, GoogleSatellite, GoogleHybrid or GooglePhysical). It can also be an arbitrary URL in a syntax acceptable for OpenLayers.Layer.OSM.url parameter.",
|
||||
safe => 0,
|
||||
rebuild => 1,
|
||||
},
|
||||
|
@ -590,7 +581,6 @@ sub map_setup_code($;@) {
|
|||
$options{'mapurl'} = $mapurl;
|
||||
}
|
||||
$options{'layers'} = $config{osm_layers};
|
||||
$options{'layers_order'} = $config{osm_layers_order};
|
||||
|
||||
return "mapsetup('mapdiv-$name', " . to_json(\%options) . ");";
|
||||
}
|
||||
|
|
|
@ -41,23 +41,22 @@ function mapsetup(divname, options) {
|
|||
numZoomLevels: 19
|
||||
});
|
||||
|
||||
for (x in options.layers_order) {
|
||||
layer = options.layers_order[x];
|
||||
console.log("setting up layer: " + layer + " with argument : " + options.layers[layer]);
|
||||
for (x in options.layers) {
|
||||
layer = options.layers[x];
|
||||
console.log("setting up layer: " + layer);
|
||||
if (layer.indexOf("Google") >= 0) {
|
||||
if (options.google_apikey && options.google_apikey != 'null') {
|
||||
var gtype = G_NORMAL_MAP;
|
||||
var gtext = "";
|
||||
if (options.layers[layer] == "Satellite") {
|
||||
if (layer.indexOf("Satellite") >= 0) {
|
||||
gtype = G_SATELLITE_MAP;
|
||||
} else if (options.layers[layer] == "Hybrid") {
|
||||
} else if (layer.indexOf("Hybrid") >= 0) {
|
||||
gtype = G_HYBRID_MAP // the normal map overlaying the satellite photographs
|
||||
} else if (options.layers[layer] == "Physical") {
|
||||
} else if (layer.indexOf("Physical") >= 0) {
|
||||
gtype = G_PHYSICAL_MAP // terrain information
|
||||
}
|
||||
// this nightmare is possible through http://docs.openlayers.org/library/spherical_mercator.html
|
||||
googleLayer = new OpenLayers.Layer.Google(
|
||||
"Google (" + options.layers[layer] + ")",
|
||||
layer,
|
||||
{type: gtype,
|
||||
'sphericalMercator': true,
|
||||
'maxExtent': new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
|
||||
|
@ -67,15 +66,11 @@ function mapsetup(divname, options) {
|
|||
} else {
|
||||
console.log("no API key defined for Google layer, skipping");
|
||||
}
|
||||
} else { // OSM
|
||||
if (options.layers[layer] != 1) {
|
||||
l = options.layers[layer];
|
||||
fqdn = l.split("/")[2].split(".");
|
||||
text = fqdn[fqdn.length-2] + "." + fqdn[fqdn.length-1];
|
||||
map.addLayer(new OpenLayers.Layer.OSM(layer + " (" + text + ")", l));
|
||||
} else {
|
||||
map.addLayer(new OpenLayers.Layer.OSM(layer + " (Mapnik)"));
|
||||
}
|
||||
} else if (layer == 'OSM') { // OSM default layer
|
||||
map.addLayer(new OpenLayers.Layer.OSM("OSM (Mapnik)"));
|
||||
} else { // assumed to be a URL
|
||||
text = layer.match(/([^.\/]*\.[^.\/]*(\/[^\$]*)?)\/.*$/i) // take the first two parts of the FQDN and everything before the first $
|
||||
map.addLayer(new OpenLayers.Layer.OSM("OSM (" + text[1] + ")", layer));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue