Only add the data layer to the main map, and use the visibility changed

event to handle turning the data layer on and off.
This commit is contained in:
Tom Hughes 2008-05-11 14:41:11 +00:00
parent 5620d7263a
commit 4d8ea0eed0
3 changed files with 14 additions and 20 deletions

View file

@ -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();
}

View file

@ -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", {

View file

@ -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();
}
}
}
});