diff --git a/src/objectliterals.jsdoc b/src/objectliterals.jsdoc index 07f825e661..12c3dc27ac 100644 --- a/src/objectliterals.jsdoc +++ b/src/objectliterals.jsdoc @@ -681,7 +681,14 @@ /** * @typedef {Object} olx.source.ImageCanvasOptions * @property {Array.|undefined} attributions Attributions. - * @property {ol.CanvasFunctionType} canvasFunction Canvas function. + * @property {ol.CanvasFunctionType} canvasFunction Canvas function. The function + * returning the canvas element used by the source as an image. The arguments + * passed to the function are: `{ol.Extent}` the image extent, `{number}` the + * image resolution, `{number}` the device pixel ratio, `{ol.Size}` the image + * size, and `{ol.proj.Projection}` the image projection. The canvas returned + * by this function is cached by the source. If the value returned by the + * function is later changed then `dispatchChangeEvent` should be called on + * the source for the source to invalidate the current cached image. * @property {ol.Extent|undefined} extent Extent. * @property {string|undefined} logo Logo. * @property {ol.proj.ProjectionLike} projection Projection. diff --git a/src/ol/layer/vectorlayer.js b/src/ol/layer/vectorlayer.js index f91af05f19..e34ada59f3 100644 --- a/src/ol/layer/vectorlayer.js +++ b/src/ol/layer/vectorlayer.js @@ -77,6 +77,9 @@ goog.exportProperty( /** + * If the styles are changed by setting a new style function or by changing the + * value returned by the style function then `dispatchChangeEvent` should be + * called on the layer for the layer to be refreshed on the screen. * @param {ol.feature.StyleFunction|undefined} styleFunction Style function. */ ol.layer.Vector.prototype.setStyleFunction = function(styleFunction) { diff --git a/src/ol/observable.exports b/src/ol/observable.exports index 1721abd5bd..cd9d88898b 100644 --- a/src/ol/observable.exports +++ b/src/ol/observable.exports @@ -1,4 +1,5 @@ @exportSymbol ol.Observable +@exportProperty ol.Observable.prototype.dispatchChangeEvent @exportProperty ol.Observable.prototype.on @exportProperty ol.Observable.prototype.once @exportProperty ol.Observable.prototype.un diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index 6e4a9e4edb..45fcf8b1fd 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -189,10 +189,11 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = var frameStateExtent = frameState.extent; var frameStateResolution = frameState.view2DState.resolution; var pixelRatio = frameState.pixelRatio; + var vectorLayerRevision = vectorLayer.getRevision(); if (!this.dirty_ && this.renderedResolution_ == frameStateResolution && - this.renderedRevision_ == vectorSource.getRevision() && + this.renderedRevision_ == vectorLayerRevision && ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) { return; } @@ -230,7 +231,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = replayGroup.finish(); this.renderedResolution_ = frameStateResolution; - this.renderedRevision_ = vectorSource.getRevision(); + this.renderedRevision_ = vectorLayerRevision; if (!replayGroup.isEmpty()) { this.replayGroup_ = replayGroup; }