diff --git a/src/objectliterals.exports b/src/objectliterals.exports
index 7ed3f72d17..1acfeb2081 100644
--- a/src/objectliterals.exports
+++ b/src/objectliterals.exports
@@ -1,7 +1,7 @@
@exportObjectLiteral ol.MapOptions
@exportObjectLiteralProperty ol.MapOptions.controls Array.
|undefined
@exportObjectLiteralProperty ol.MapOptions.interactions ol.Collection|undefined
-@exportObjectLiteralProperty ol.MapOptions.layers ol.Collection|undefined
+@exportObjectLiteralProperty ol.MapOptions.layers Array.|ol.Collection|undefined
@exportObjectLiteralProperty ol.MapOptions.renderer ol.RendererHint|undefined
@exportObjectLiteralProperty ol.MapOptions.renderers Array.|undefined
@exportObjectLiteralProperty ol.MapOptions.target Element|string
diff --git a/src/ol/map.js b/src/ol/map.js
index 06f997f7b4..8f9af2249f 100644
--- a/src/ol/map.js
+++ b/src/ol/map.js
@@ -823,8 +823,18 @@ ol.Map.createOptionsInternal = function(mapOptions) {
*/
var values = {};
- values[ol.MapProperty.LAYERS] = goog.isDef(mapOptions.layers) ?
- mapOptions.layers : new ol.Collection();
+ var layers;
+ if (goog.isDef(mapOptions.layers)) {
+ if (goog.isArray(mapOptions.layers)) {
+ layers = new ol.Collection(goog.array.clone(mapOptions.layers));
+ } else {
+ goog.asserts.assert(mapOptions.layers instanceof ol.Collection);
+ layers = mapOptions.layers;
+ }
+ } else {
+ layers = new ol.Collection();
+ }
+ values[ol.MapProperty.LAYERS] = layers;
values[ol.MapProperty.VIEW] = goog.isDef(mapOptions.view) ?
mapOptions.view : new ol.View2D();