diff --git a/src/objectliterals.jsdoc b/src/objectliterals.jsdoc index e26100a3b2..27d384f189 100644 --- a/src/objectliterals.jsdoc +++ b/src/objectliterals.jsdoc @@ -532,7 +532,7 @@ * @property {number|undefined} opacity Opacity. 0-1. Default is `1`. * @property {number|undefined} saturation Saturation. * @property {ol.source.Vector} source Source. - * @property {ol.feature.StyleFunction|undefined} styleFunction Style function. + * @property {ol.style.Style|Array.|ol.feature.StyleFunction|undefined} style Layer style. * @property {boolean|undefined} visible Visibility. Default is `true` (visible). * @todo stability experimental */ diff --git a/src/ol/layer/vectorlayer.js b/src/ol/layer/vectorlayer.js index e9bd4110d3..39f5b0eb1e 100644 --- a/src/ol/layer/vectorlayer.js +++ b/src/ol/layer/vectorlayer.js @@ -1,7 +1,9 @@ goog.provide('ol.layer.Vector'); +goog.require('goog.asserts'); goog.require('ol.feature'); goog.require('ol.layer.Layer'); +goog.require('ol.style.Style'); /** @@ -27,9 +29,32 @@ ol.layer.Vector = function(opt_options) { goog.base(this, /** @type {olx.layer.LayerOptions} */ (options)); - // FIXME veryify this - if (goog.isDef(options.styleFunction)) { - this.setStyleFunction(options.styleFunction); + if (goog.isDef(options.style)) { + + /** + * @type {ol.feature.StyleFunction} + */ + var styleFunction; + + if (goog.isFunction(options.style)) { + styleFunction = /** @type {ol.feature.StyleFunction} */ (options.style); + } else { + /** + * @type {Array.} + */ + var styles; + if (goog.isArray(options.style)) { + styles = options.style; + } else { + goog.asserts.assertInstanceof(options.style, ol.style.Style); + styles = [options.style]; + } + styleFunction = function(feature, resolution) { + return styles; + }; + } + + this.setStyleFunction(styleFunction); } };