]> git.openstreetmap.org Git - rails.git/commitdiff
Merge 7744:7922 from trunk.
authorTom Hughes <tom@compton.nu>
Wed, 28 May 2008 16:37:31 +0000 (16:37 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 28 May 2008 16:37:31 +0000 (16:37 +0000)
1  2 
app/views/site/index.rhtml
public/javascripts/map.js
public/openlayers/OpenStreetMap.js

index bd114a6b36e54c640dc1221261de6ccec5f37e2a,d6247158d3bcc7d5c31a3124f4801e5c910e911b..656db99c80008a3b8757d061bf25d12f52dad4d1
@@@ -8,6 -8,14 +8,14 @@@
  <%= render :partial => 'key' %>
  <%= render :partial => 'search' %>
  
+ <noscript>
+   <div id="noscript">
+     <p>You are either using a browser that doesn't support javascript, or you have disabled javascript.</p>
+     <p>OpenStreetMap uses javascript for its slippy map.</p>
+     <p>You may want to try the <a href="http://tah.openstreetmap.org/Browse/">Tiles@Home static tile browser</a> if you are unable to enable javascript.</p>
+   </div>
+ </noscript>
  <div id="map">
  <div id="permalink"><a href="/" id="permalinkanchor">Permalink</a></div>
  </div> 
@@@ -86,10 -94,6 +94,10 @@@ by the OpenStreetMap project and its co
    function mapInit(){
      map = createMap("map");
  
 +    map.dataLayer = new OpenLayers.Layer("Data", { "visibility": false });
 +    map.dataLayer.events.register("visibilitychanged", map.dataLayer, toggleData);
 +    map.addLayer(map.dataLayer);
 +
      <% if bbox %>
      var bbox = new OpenLayers.Bounds(<%= minlon %>, <%= minlat %>, <%= maxlon %>, <%= maxlat %>);
  
      handleResize();
    }
  
 +  function toggleData() {
 +    if (map.dataLayer.visibility) {
 +      <%= remote_function :url => { :controller => 'browse', :action => 'start' } %>
 +    } else {
 +      closeSidebar();
 +    }
 +  }
 +
    function getPosition() {
      return getMapCenter();
    }
index 9b144c560a5093f6d0852137f7e948dc079dc991,7591d7d162b4e2b73c40449efab37256d77bee3b..2bdba6229b589b8d52ae3a96fd8e21e5d8b361d9
@@@ -7,11 -7,9 +7,11 @@@ OpenLayers._getScriptLocation = functio
     return "/openlayers/";
  }
  
 -function createMap(divName) {
 +function createMap(divName, options) {
 +   options = options || {};
 +
     map = new OpenLayers.Map(divName, {
 -      controls: [
 +      controls: options.controls || [
           new OpenLayers.Control.ArgParser(),
           new OpenLayers.Control.Attribution(),
           new OpenLayers.Control.LayerSwitcher(),
@@@ -20,7 -18,7 +20,7 @@@
           new OpenLayers.Control.ScaleLine()
        ],
        units: "m",
 -      maxResolution: 156543,
 +      maxResolution: 156543.0339,
        numZoomLevels: 20
     });
  
     });
     map.addLayer(osmarender);
  
+    var cyclemap = new OpenLayers.Layer.OSM.CycleMap("Cycle Map", {
+       displayOutsideMaxExtent: true,
+       wrapDateLine: true
+    });
+    map.addLayer(cyclemap);
     var maplint = new OpenLayers.Layer.OSM.Maplint("Maplint", {
        displayOutsideMaxExtent: true,
        wrapDateLine: true
@@@ -120,35 -124,39 +126,39 @@@ function getEventPosition(event) 
  }
  
  function getMapLayers() {
-    var layers = "";
+    var layerConfig = "";
  
-    for (var i=0; i< this.map.layers.length; i++) {
-       var layer = this.map.layers[i];
+    for (var layers = map.getLayersBy("isBaseLayer", true), i = 0; i < layers.length; i++) {
+       layerConfig += layers[i] == map.baseLayer ? "B" : "0";
+    }
  
-       if (layer.isBaseLayer) {
-          layers += (layer == this.map.baseLayer) ? "B" : "0";
-       } else {
-          layers += (layer.getVisibility()) ? "T" : "F";
-       }
+    for (var layers = map.getLayersBy("isBaseLayer", false), i = 0; i < layers.length; i++) {
+       layerConfig += layers[i].getVisibility() ? "T" : "F";
     }
  
-    return layers;
+    return layerConfig;
  }
  
- function setMapLayers(layers) {
-    for (var i=0; i < layers.length; i++) {
-       var layer = map.layers[i];
+ function setMapLayers(layerConfig) {
+    var l = 0;
  
-       if (layer) {
-          var c = layers.charAt(i);
+    for (var layers = map.getLayersBy("isBaseLayer", true), i = 0; i < layers.length; i++) {
+       var c = layerConfig.charAt(l++);
  
-          if (c == "B") {
-             map.setBaseLayer(layer);
-          } else if ( (c == "T") || (c == "F") ) {
-             layer.setVisibility(c == "T");
-          }
+       if (c == "B") {
+          map.setBaseLayer(layers[i]);
        }
     }
+    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++);
+       layers[i].setVisibility(c == "T");
+    }
  }
  
  function scaleToZoom(scale) {
index d6bc397d132ae517433ae494ad5956a0cc18cef1,c783dba20f2b940a48d2edbfbfbefd827a45a642..69e8840b2a33e5152da97bbc1a0d824cc225f416
@@@ -48,8 -48,8 +48,8 @@@ OpenLayers.Layer.OSM = OpenLayers.Class
      initialize: function(name, url, options) {
          options = OpenLayers.Util.extend({
              attribution: "Data by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",
 -            maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508),
 -            maxResolution: 156543,
 +            maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
 +            maxResolution: 156543.0339,
              units: "m",
              projection: "EPSG:900913",
              transitionEffect: "resize"
@@@ -155,6 -155,34 +155,34 @@@ OpenLayers.Layer.OSM.Osmarender = OpenL
      CLASS_NAME: "OpenLayers.Layer.OSM.Osmarender"
  });
  
+ /**
+  * Class: OpenLayers.Layer.OSM.CycleMap
+  *
+  * Inherits from:
+  *  - <OpenLayers.Layer.OSM>
+  */
+ OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
+     /**
+      * Constructor: OpenLayers.Layer.OSM.CycleMap
+      *
+      * Parameters:
+      * name - {String}
+      * options - {Object} Hashtable of extra options to tag onto the layer
+      */
+     initialize: function(name, options) {
+         var url = [
+             "http://a.thunderflames.org/tiles/cycle/",
+             "http://b.thunderflames.org/tiles/cycle/",
+             "http://c.thunderflames.org/tiles/cycle/"
+         ];
+         options = OpenLayers.Util.extend({ numZoomLevels: 17 }, options);
+         var newArguments = [name, url, options];
+         OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
+     },
+     CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap"
+ });
  /**
   * Class: OpenLayers.Layer.OSM.Maplint
   *