From: Tom Hughes Date: Sun, 11 May 2008 14:41:11 +0000 (+0000) Subject: Only add the data layer to the main map, and use the visibility changed X-Git-Tag: live~7882^2~10 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/4d8ea0eed0d47b3547f222fbc47524328bbd23a7?ds=inline Only add the data layer to the main map, and use the visibility changed event to handle turning the data layer on and off. --- diff --git a/app/views/site/index.rhtml b/app/views/site/index.rhtml index 895885360..bd114a6b3 100644 --- a/app/views/site/index.rhtml +++ b/app/views/site/index.rhtml @@ -86,6 +86,10 @@ by the OpenStreetMap project and its contributors. 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 %>); @@ -118,6 +122,14 @@ by the OpenStreetMap project and its contributors. handleResize(); } + function toggleData() { + if (map.dataLayer.visibility) { + <%= remote_function :url => { :controller => 'browse', :action => 'start' } %> + } else { + closeSidebar(); + } + } + function getPosition() { return getMapCenter(); } diff --git a/public/javascripts/map.js b/public/javascripts/map.js index c7f381d84..9b144c560 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -8,7 +8,8 @@ OpenLayers._getScriptLocation = function () { } function createMap(divName, options) { - if (!options) { options = {} } + options = options || {}; + map = new OpenLayers.Map(divName, { controls: options.controls || [ new OpenLayers.Control.ArgParser(), @@ -40,9 +41,6 @@ function createMap(divName, options) { wrapDateLine: true }); map.addLayer(maplint); - var data = new OpenLayers.Layer.Data("Data", {'visibility': false}); - map.addLayer(data); - map.dataLayer = data; var numZoomLevels = Math.max(mapnik.numZoomLevels, osmarender.numZoomLevels); markers = new OpenLayers.Layer.Markers("Markers", { diff --git a/public/openlayers/OpenStreetMap.js b/public/openlayers/OpenStreetMap.js index f472d3fc1..d6bc397d1 100644 --- a/public/openlayers/OpenStreetMap.js +++ b/public/openlayers/OpenStreetMap.js @@ -182,19 +182,3 @@ OpenLayers.Layer.OSM.Maplint = OpenLayers.Class(OpenLayers.Layer.OSM, { CLASS_NAME: "OpenLayers.Layer.OSM.Maplint" }); - -OpenLayers.Layer.Data = OpenLayers.Class(OpenLayers.Layer, { - setVisibility: function(vis) { - var oldvis = this.visibility; - OpenLayers.Layer.prototype.setVisibility.apply(this, arguments); - if (!this.map) { return; } - if (vis && !oldvis) { - new Ajax.Request('/browse/start', {asynchronous:true, evalScripts:true}); - } else { - if (this.stopBrowse) { - this.stopBrowse(); - closeSidebar(); - } - } - } -});