diff --git a/src/ol/layer/group.js b/src/ol/layer/group.js index b8cadffd5e..f61707c22c 100644 --- a/src/ol/layer/group.js +++ b/src/ol/layer/group.js @@ -54,14 +54,14 @@ ol.layer.Group = function(opt_options) { if (layers) { if (Array.isArray(layers)) { - layers = new ol.Collection(layers.slice()); + layers = new ol.Collection(layers.slice(), {unique: true}); } else { ol.asserts.assert(layers instanceof ol.Collection, 43); // Expected `layers` to be an array or an `ol.Collection` layers = layers; } } else { - layers = new ol.Collection(); + layers = new ol.Collection(undefined, {unique: true}); } this.setLayers(layers); diff --git a/test/spec/ol/map.test.js b/test/spec/ol/map.test.js index a07b4d1810..88d47344bf 100644 --- a/test/spec/ol/map.test.js +++ b/test/spec/ol/map.test.js @@ -50,6 +50,27 @@ describe('ol.Map', function() { }); + describe('#addLayer()', function() { + it('adds a layer to the map', function() { + var map = new ol.Map({}); + var layer = new ol.layer.Tile(); + map.addLayer(layer); + + expect(map.getLayers().item(0)).to.be(layer); + }); + + it('throws if a layer is added twice', function() { + var map = new ol.Map({}); + var layer = new ol.layer.Tile(); + map.addLayer(layer); + + var call = function() { + map.addLayer(layer); + }; + expect(call).to.throwException(); + }); + }); + describe('#addInteraction()', function() { it('adds an interaction to the map', function() { var map = new ol.Map({});