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();
|
var replayState = tile.getReplayState();
|
||||||
if (replayState.renderedRevision == revision &&
|
if (!replayState.dirty && replayState.renderedRevision == revision &&
|
||||||
replayState.renderedRenderOrder == renderOrder) {
|
replayState.renderedRenderOrder == renderOrder) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -176,6 +176,7 @@ ol.renderer.canvas.VectorTileLayer.prototype.createReplayGroup = function(tile,
|
|||||||
// FIXME dispose of old replayGroup in post render
|
// FIXME dispose of old replayGroup in post render
|
||||||
goog.dispose(replayState.replayGroup);
|
goog.dispose(replayState.replayGroup);
|
||||||
replayState.replayGroup = null;
|
replayState.replayGroup = null;
|
||||||
|
replayState.dirty = false;
|
||||||
|
|
||||||
var source = layer.getSource();
|
var source = layer.getSource();
|
||||||
goog.asserts.assertInstanceof(source, ol.source.VectorTile,
|
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,
|
var dirty = this.renderFeature(feature, squaredTolerance, styles,
|
||||||
replayGroup);
|
replayGroup);
|
||||||
this.dirty_ = this.dirty_ || dirty;
|
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>} */
|
/** @type {Array.<number>} */
|
||||||
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
||||||
goog.array.sort(zs);
|
goog.array.sort(zs);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ goog.require('ol.TileState');
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {{
|
* @typedef {{
|
||||||
|
* dirty: boolean,
|
||||||
* renderedRenderOrder: (null|function(ol.Feature, ol.Feature):number),
|
* renderedRenderOrder: (null|function(ol.Feature, ol.Feature):number),
|
||||||
* renderedRevision: number,
|
* renderedRevision: number,
|
||||||
* replayGroup: ol.render.IReplayGroup}}
|
* replayGroup: ol.render.IReplayGroup}}
|
||||||
@@ -58,6 +59,7 @@ ol.VectorTile = function(tileCoord, state, src, format, tileLoadFunction) {
|
|||||||
* @type {ol.TileReplayState}
|
* @type {ol.TileReplayState}
|
||||||
*/
|
*/
|
||||||
this.replayState_ = {
|
this.replayState_ = {
|
||||||
|
dirty: false,
|
||||||
renderedRenderOrder: null,
|
renderedRenderOrder: null,
|
||||||
renderedRevision: -1,
|
renderedRevision: -1,
|
||||||
replayGroup: null
|
replayGroup: null
|
||||||
|
|||||||
Reference in New Issue
Block a user