diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index 83c764876f..a2a1b2706b 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -212,12 +212,17 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = * @this {ol.renderer.canvas.VectorLayer} */ function(feature) { - var styleFunction = feature.getStyleFunction() || - vectorLayer.getStyleFunction(); - goog.asserts.assert(goog.isDef(styleFunction)); - var dirty = this.renderFeature( - feature, resolution, pixelRatio, styleFunction, replayGroup); - this.dirty_ = this.dirty_ || dirty; + var styles; + if (goog.isDef(feature.getStyleFunction())) { + styles = feature.getStyleFunction().call(feature, resolution); + } else if (goog.isDef(vectorLayer.getStyleFunction())) { + styles = vectorLayer.getStyleFunction()(feature, resolution); + } + if (goog.isDefAndNotNull(styles)) { + var dirty = this.renderFeature( + feature, resolution, pixelRatio, styles, replayGroup); + this.dirty_ = this.dirty_ || dirty; + } }; if (!goog.isNull(vectorLayerRenderOrder)) { /** @type {Array.} */ @@ -249,13 +254,12 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = * @param {ol.Feature} feature Feature. * @param {number} resolution Resolution. * @param {number} pixelRatio Pixel ratio. - * @param {ol.style.StyleFunction} styleFunction Style function. + * @param {Array.} styles Array of styles * @param {ol.render.canvas.ReplayGroup} replayGroup Replay group. * @return {boolean} `true` if an image is loading. */ ol.renderer.canvas.VectorLayer.prototype.renderFeature = - function(feature, resolution, pixelRatio, styleFunction, replayGroup) { - var styles = styleFunction(feature, resolution); + function(feature, resolution, pixelRatio, styles, replayGroup) { if (!goog.isDefAndNotNull(styles)) { return false; }