diff --git a/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js b/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js index 666834497f..3d739de5e7 100644 --- a/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js @@ -168,7 +168,7 @@ ol.renderer.canvas.VectorTileLayer.prototype.createReplayGroup = function(tile, } var replayState = tile.getReplayState(); - if (replayState.renderedRevision == revision && + if (!replayState.dirty && replayState.renderedRevision == revision && replayState.renderedRenderOrder == renderOrder) { return; } @@ -176,6 +176,7 @@ ol.renderer.canvas.VectorTileLayer.prototype.createReplayGroup = function(tile, // FIXME dispose of old replayGroup in post render goog.dispose(replayState.replayGroup); replayState.replayGroup = null; + replayState.dirty = false; var source = layer.getSource(); goog.asserts.assertInstanceof(source, ol.source.VectorTile, @@ -211,6 +212,7 @@ ol.renderer.canvas.VectorTileLayer.prototype.createReplayGroup = function(tile, var dirty = this.renderFeature(feature, squaredTolerance, styles, replayGroup); this.dirty_ = this.dirty_ || dirty; + replayState.dirty = replayState.dirty || dirty; } } @@ -391,6 +393,8 @@ ol.renderer.canvas.VectorTileLayer.prototype.prepareFrame = } } + this.dirty_ = false; + /** @type {Array.} */ var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); diff --git a/src/ol/vectortile.js b/src/ol/vectortile.js index 63810788e9..29ab88587c 100644 --- a/src/ol/vectortile.js +++ b/src/ol/vectortile.js @@ -8,6 +8,7 @@ goog.require('ol.TileState'); /** * @typedef {{ + * dirty: boolean, * renderedRenderOrder: (null|function(ol.Feature, ol.Feature):number), * renderedRevision: number, * replayGroup: ol.render.IReplayGroup}} @@ -58,6 +59,7 @@ ol.VectorTile = function(tileCoord, state, src, format, tileLoadFunction) { * @type {ol.TileReplayState} */ this.replayState_ = { + dirty: false, renderedRenderOrder: null, renderedRevision: -1, replayGroup: null