<%= 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>
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();
}
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(),
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
}
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) {
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"
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
*