Handle dirty tiles properly
This commit is contained in:
@@ -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.<number>} */
|
||||
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
||||
goog.array.sort(zs);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user