X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ac775ef8e72170102f8db94dc56c6add861234ed..04af50eb7f52b4bd63b23791a72e699b19a20f98:/underlays/osm/ikiwiki/osm.js?ds=inline

diff --git a/underlays/osm/ikiwiki/osm.js b/underlays/osm/ikiwiki/osm.js
index c41aeeb1f..37e588f7b 100644
--- a/underlays/osm/ikiwiki/osm.js
+++ b/underlays/osm/ikiwiki/osm.js
@@ -41,24 +41,39 @@ function mapsetup(divname, options) {
 		numZoomLevels: 19
 	});
 
-	if (options.mapurl) {
-		var newLayer = new OpenLayers.Layer.OSM("Local Tiles", options.mapurl);
-		map.addLayer(newLayer);
-	} else {
-		map.addLayer(new OpenLayers.Layer.OSM());
+	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;
+				if (layer.indexOf("Satellite") >= 0) {
+					gtype = G_SATELLITE_MAP;
+				} else if (layer.indexOf("Hybrid") >= 0) {
+					gtype = G_HYBRID_MAP // the normal map overlaying the satellite photographs
+				} 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(
+					layer,
+					{type: gtype,
+					 'sphericalMercator': true,
+					 'maxExtent': new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
+					 projection: new OpenLayers.Projection("EPSG:3857")}
+				);
+				map.addLayer(googleLayer);
+			} else {
+				console.log("no API key defined for Google layer, skipping");
+			}
+		} 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));
+		}
 	}
 
-	// this nightmare is possible through http://docs.openlayers.org/library/spherical_mercator.html
-	if (options.google_apikey && options.google_apikey != 'null') {
-		googleLayer = new OpenLayers.Layer.Google(
-			"Google Hybrid",
-			{type: G_HYBRID_MAP,
-			 'sphericalMercator': true,
-			 'maxExtent': new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
-			 projection: new OpenLayers.Projection("EPSG:3857")}
-		);
-		map.addLayer(googleLayer);
-	}
 	if (options.format == 'CSV') {
 		pois = new OpenLayers.Layer.Text( "CSV",
 			{ location: options.csvurl,
@@ -121,7 +136,7 @@ function mapsetup(divname, options) {
 
 	if (options.fullscreen) {
 		map.addControl(new OpenLayers.Control.PanZoomBar());
-		map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
+		map.addControl(new OpenLayers.Control.LayerSwitcher());
 		map.addControl(new OpenLayers.Control.MousePosition());
 		map.addControl(new OpenLayers.Control.KeyboardDefaults());
 	} else {