From: Tom Hughes Date: Wed, 28 May 2008 16:37:31 +0000 (+0000) Subject: Merge 7744:7922 from trunk. X-Git-Tag: live~7751^2~7 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/88105d9c643519e02082ba9cc5044bb0dfdcb7b9?hp=-c Merge 7744:7922 from trunk. --- 88105d9c643519e02082ba9cc5044bb0dfdcb7b9 diff --combined app/views/site/index.rhtml index bd114a6b3,d6247158d..656db99c8 --- a/app/views/site/index.rhtml +++ b/app/views/site/index.rhtml @@@ -8,6 -8,14 +8,14 @@@ <%= render :partial => 'key' %> <%= render :partial => 'search' %> + +
@@@ -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 %>); @@@ -122,14 -126,6 +130,14 @@@ handleResize(); } + function toggleData() { + if (map.dataLayer.visibility) { + <%= remote_function :url => { :controller => 'browse', :action => 'start' } %> + } else { + closeSidebar(); + } + } + function getPosition() { return getMapCenter(); } diff --combined public/javascripts/map.js index 9b144c560,7591d7d16..2bdba6229 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@@ -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 }); @@@ -36,6 -34,12 +36,12 @@@ }); 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) { diff --combined public/openlayers/OpenStreetMap.js index d6bc397d1,c783dba20..69e8840b2 --- a/public/openlayers/OpenStreetMap.js +++ b/public/openlayers/OpenStreetMap.js @@@ -48,8 -48,8 +48,8 @@@ OpenLayers.Layer.OSM = OpenLayers.Class initialize: function(name, url, options) { options = OpenLayers.Util.extend({ attribution: "Data by OpenStreetMap", - 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.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 *