diff --git a/src/ol/feature.js b/src/ol/feature.js
index 2272f2a9b7..3aab9bb187 100644
--- a/src/ol/feature.js
+++ b/src/ol/feature.js
@@ -172,7 +172,7 @@ ol.Feature.prototype.getGeometryName = function() {
* Get the feature's style. Will return what was provided to the
* {@link ol.Feature#setStyle} method.
* @return {ol.style.Style|Array.
|
- * ol.FeatureStyleFunction} The feature style.
+ * ol.FeatureStyleFunction|ol.StyleFunction} The feature style.
* @api stable
*/
ol.Feature.prototype.getStyle = function() {
@@ -233,7 +233,7 @@ ol.Feature.prototype.setGeometry = function(geometry) {
* of styles, or a function that takes a resolution and returns an array of
* styles. If it is `null` the feature has no style (a `null` style).
* @param {ol.style.Style|Array.|
- * ol.FeatureStyleFunction} style Style for this feature.
+ * ol.FeatureStyleFunction|ol.StyleFunction} style Style for this feature.
* @api stable
* @fires ol.events.Event#event:change
*/
@@ -291,7 +291,13 @@ ol.Feature.createStyleFunction = function(obj) {
var styleFunction;
if (typeof obj === 'function') {
- styleFunction = obj;
+ if (obj.length == 2) {
+ styleFunction = function(resolution) {
+ return /** @type {ol.StyleFunction} */ (obj)(this, resolution);
+ };
+ } else {
+ styleFunction = obj;
+ }
} else {
/**
* @type {Array.}
diff --git a/test/spec/ol/feature.test.js b/test/spec/ol/feature.test.js
index 0e2b1c4a69..f0ef1b6269 100644
--- a/test/spec/ol/feature.test.js
+++ b/test/spec/ol/feature.test.js
@@ -303,7 +303,7 @@ describe('ol.Feature', function() {
var style = new ol.style.Style();
var styleFunction = function(feature, resolution) {
- return null;
+ return resolution;
};
it('accepts a single style', function() {
@@ -321,9 +321,20 @@ describe('ol.Feature', function() {
});
it('accepts a style function', function() {
+ var feature = new ol.Feature();
+ function featureStyleFunction(resolution) {
+ return styleFunction(this, resolution);
+ }
+ feature.setStyle(featureStyleFunction);
+ expect(feature.getStyleFunction()).to.be(featureStyleFunction);
+ expect(feature.getStyleFunction()(42)).to.be(42);
+ });
+
+ it('accepts a layer style function', function() {
var feature = new ol.Feature();
feature.setStyle(styleFunction);
- expect(feature.getStyleFunction()).to.be(styleFunction);
+ expect(feature.getStyleFunction()).to.not.be(styleFunction);
+ expect(feature.getStyleFunction()(42)).to.be(42);
});
it('accepts null', function() {