diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 41f2a82c5b..ed6593a97b 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -590,13 +590,15 @@ OpenLayers.Map = OpenLayers.Class({ layer.map = null; // if we removed the base layer, need to set a new one - if (setNewBaseLayer && (this.baseLayer == layer)) { + if(this.baseLayer == layer) { this.baseLayer = null; - for(var i=0; i < this.layers.length; i++) { - var iLayer = this.layers[i]; - if (iLayer.isBaseLayer) { - this.setBaseLayer(iLayer); - break; + if(setNewBaseLayer) { + for(var i=0; i < this.layers.length; i++) { + var iLayer = this.layers[i]; + if (iLayer.isBaseLayer) { + this.setBaseLayer(iLayer); + break; + } } } } diff --git a/tests/test_Map.html b/tests/test_Map.html index 7611790f9b..98830758c1 100644 --- a/tests/test_Map.html +++ b/tests/test_Map.html @@ -305,6 +305,26 @@ map.setBaseLayer(wmslayer2); t.ok(map.baseLayer == wmslayer2, "setbaselayer correctly sets 'baseLayer' property"); } + + function test_Map_removeLayer(t) { + t.plan(1); + var f = function() {}; + var layers = [ + {name: "fee", removeMap: f}, + {name: "fi", removeMap: f}, + {name: "fo", removeMap: f}, + {name: "fum", removeMap: f} + ]; + var map = { + layers: layers, + baseLayer: layers[0], + layerContainerDiv: {removeChild: f}, + events: {triggerEvent: f} + }; + OpenLayers.Map.prototype.removeLayer.apply(map, [map.baseLayer, false]); + t.eq(map.baseLayer, null, + "removing the baselayer sets baseLayer to null"); + } function test_Map_removeLayer_res(t) { t.plan(2);