Fix vector tile renderer ready

This commit is contained in:
Maximilian Krög
2022-05-17 02:06:55 +02:00
parent de392a9846
commit 2473e5bd32

View File

@@ -188,10 +188,10 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
*/ */
prepareFrame(frameState) { prepareFrame(frameState) {
const layerRevision = this.getLayer().getRevision(); const layerRevision = this.getLayer().getRevision();
if (this.renderedLayerRevision_ != layerRevision) { if (this.renderedLayerRevision_ !== layerRevision) {
this.renderedLayerRevision_ = layerRevision;
this.renderedTiles.length = 0; this.renderedTiles.length = 0;
} }
this.renderedLayerRevision_ = layerRevision;
return super.prepareFrame(frameState); return super.prepareFrame(frameState);
} }
@@ -232,6 +232,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
if (declutter) { if (declutter) {
tile.declutterExecutorGroups[layerUid] = []; tile.declutterExecutorGroups[layerUid] = [];
} }
builderState.dirty = false;
for (let t = 0, tt = sourceTiles.length; t < tt; ++t) { for (let t = 0, tt = sourceTiles.length; t < tt; ++t) {
const sourceTile = sourceTiles[t]; const sourceTile = sourceTiles[t];
if (sourceTile.getState() != TileState.LOADED) { if (sourceTile.getState() != TileState.LOADED) {
@@ -249,7 +250,6 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const bufferedExtent = equals(sourceTileExtent, sharedExtent) const bufferedExtent = equals(sourceTileExtent, sharedExtent)
? null ? null
: builderExtent; : builderExtent;
builderState.dirty = false;
const builderGroup = new CanvasBuilderGroup( const builderGroup = new CanvasBuilderGroup(
0, 0,
builderExtent, builderExtent,
@@ -332,7 +332,6 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
builderState.renderedRevision = revision; builderState.renderedRevision = revision;
builderState.renderedRenderOrder = renderOrder; builderState.renderedRenderOrder = renderOrder;
builderState.renderedResolution = resolution; builderState.renderedResolution = resolution;
this.ready = !builderState.dirty;
} }
/** /**
@@ -667,10 +666,12 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const tiles = this.renderedTiles; const tiles = this.renderedTiles;
const clips = []; const clips = [];
const clipZs = []; const clipZs = [];
let ready = true;
for (let i = tiles.length - 1; i >= 0; --i) { for (let i = tiles.length - 1; i >= 0; --i) {
const tile = /** @type {import("../../VectorRenderTile.js").default} */ ( const tile = /** @type {import("../../VectorRenderTile.js").default} */ (
tiles[i] tiles[i]
); );
ready = ready && !tile.getReplayState(layer).dirty;
const executorGroups = tile.executorGroups[getUid(layer)].filter( const executorGroups = tile.executorGroups[getUid(layer)].filter(
(group) => group.hasExecutors(replayTypes) (group) => group.hasExecutors(replayTypes)
); );
@@ -735,6 +736,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
} }
} }
context.globalAlpha = alpha; context.globalAlpha = alpha;
this.ready = ready;
return this.container; return this.container;
} }