From 1135c771b7432da9cbca858238eac5eeb9f6aca9 Mon Sep 17 00:00:00 2001 From: fredj Date: Thu, 1 Dec 2011 16:13:35 +0100 Subject: [PATCH] Instead of throwing an exception, return false if the layer can't be added to the map. --- lib/OpenLayers/Map.js | 10 +++++++--- tests/Map.html | 12 +++++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 20bc652465..5b13cff79a 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -938,16 +938,18 @@ OpenLayers.Map = OpenLayers.Class({ * * Parameters: * layer - {} + * + * Returns: + * {Boolean} True if the layer has been added to the map. */ addLayer: function (layer) { for(var i = 0, len = this.layers.length; i < len; i++) { if (this.layers[i] == layer) { - throw new Error("You tried to add the layer: " + layer.name + - " to the map, but it has already been added"); + return false; } } if (this.events.triggerEvent("preaddlayer", {layer: layer}) === false) { - return; + return false; } if(this.allOverlays) { layer.isBaseLayer = false; @@ -979,6 +981,8 @@ OpenLayers.Map = OpenLayers.Class({ this.events.triggerEvent("addlayer", {layer: layer}); layer.events.triggerEvent("added", {map: this, layer: layer}); layer.afterAdd(); + + return true; }, /** diff --git a/tests/Map.html b/tests/Map.html index 167cda12dc..856434ac6d 100644 --- a/tests/Map.html +++ b/tests/Map.html @@ -726,7 +726,7 @@ } function test_Map_double_addLayer(t) { - t.plan( 1 ); + t.plan(2); map = new OpenLayers.Map($('map')); layer = new OpenLayers.Layer.WMS('Test Layer', @@ -734,12 +734,10 @@ {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'} ); - map.addLayers([layer]); - try { - map.addLayers([layer]); - } catch(e) { - t.ok(true, "Map does not allow double adding of layers." ); - } + var added = map.addLayer(layer); + t.ok(added === true, "Map.addLayer returns true if the layer is added to the map."); + var added = map.addLayer(layer); + t.ok(added === false, "Map.addLayer returns false if the layer is already present."); map.destroy(); }