diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index a02452d3de..1c687108f3 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -1098,7 +1098,7 @@ OpenLayers.Map = OpenLayers.Class({ if (OpenLayers.Util.indexOf(this.layers, newBaseLayer) != -1) { // make the old base layer invisible - if (this.baseLayer != null) { + if (this.baseLayer != null && !this.allOverlays) { this.baseLayer.setVisibility(false); } @@ -1109,7 +1109,9 @@ OpenLayers.Map = OpenLayers.Class({ // changing. This is used by tiles to check if they should // draw themselves. this.viewRequestID++; - this.baseLayer.visibility = true; + if(!this.allOverlays) { + this.baseLayer.visibility = true; + } //redraw all layers var center = this.getCenter(); diff --git a/tests/Map.html b/tests/Map.html index be49e019bd..b60b649685 100644 --- a/tests/Map.html +++ b/tests/Map.html @@ -1208,7 +1208,7 @@ function test_allOverlays(t) { - t.plan(9); + t.plan(14); var map = new OpenLayers.Map({ div: "map", allOverlays: true @@ -1264,8 +1264,20 @@ t.eq(map.baseLayer.name, "b", "raising the base layer sets a new base layer"); map.raiseLayer(d, -1); + // d, b, c, a t.eq(map.baseLayer.name, "d", "lowering a layer to lowest index sets as base"); + // all this switching of base layer didn't muck with layer visibility + t.eq(a.visibility, true, "a is visible"); + t.eq(b.visibility, true, "b is visible"); + t.eq(c.visibility, true, "c is visible"); + t.eq(d.visibility, true, "d is visible"); + + // test that map can have an invisible base layer + b.setVisibility(false); + map.setLayerIndex(b, 0); + t.eq(b.visibility, false, "changing layer order doesn't change visibility"); + map.destroy(); }