]> sipb.mit.edu Git - ikiwiki.git/blobdiff - underlays/osm/ikiwiki/osm.js
Merge branch 'restrict-comment-formats' of git://rtime.felk.cvut.cz/sojka/ikiwiki
[ikiwiki.git] / underlays / osm / ikiwiki / osm.js
index 4f53b1dc8e2c97798ed93e9d0fa1d74139ed56d6..37e588f7b5bba4c1125052f82c358359a3459705 100644 (file)
@@ -41,23 +41,39 @@ function mapsetup(divname, options) {
                numZoomLevels: 19
        });
 
-       if (options.mapurl) {
-               map.addLayer(new OpenLayers.Layer.OSM("OpenStreetMap (Local)", options.mapurl));
-       } else {
-               map.addLayer(new OpenLayers.Layer.OSM("OpenStreetMap (Mapnik)"));
+       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,
@@ -120,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 {