Store source tiles on render tile instead of source

This commit is contained in:
Andreas Hocevar
2020-01-05 21:07:38 +01:00
parent 2875685b3c
commit 46d98201c3
3 changed files with 8 additions and 26 deletions

View File

@@ -67,6 +67,11 @@ class VectorRenderTile extends Tile {
*/
this.replayState_ = {};
/**
* @type {Array<import("./VectorTile.js").default>}
*/
this.sourceTiles = null;
/**
* @type {number}
*/

View File

@@ -144,12 +144,6 @@ class VectorTile extends UrlTile {
*/
this.sourceTileCache = new TileCache(this.tileCache.highWaterMark);
/**
* @private
* @type {Object<string, Array<import("../VectorTile.js").default>>}
*/
this.sourceTilesByTileKey_ = {};
/**
* @private
* @type {boolean}
@@ -229,7 +223,6 @@ class VectorTile extends UrlTile {
clear() {
this.tileCache.clear();
this.sourceTileCache.clear();
this.sourceTilesByTileKey_ = {};
}
/**
@@ -254,7 +247,7 @@ class VectorTile extends UrlTile {
const sourceZ = sourceTileGrid.getZForResolution(resolution, 1);
const minZoom = sourceTileGrid.getMinZoom();
const previousSourceTiles = this.sourceTilesByTileKey_[tile.getKey()];
const previousSourceTiles = tile.sourceTiles;
let sourceTiles, covered, loadedZ;
if (previousSourceTiles && previousSourceTiles.length > 0 && previousSourceTiles[0].tileCoord[0] === sourceZ) {
sourceTiles = previousSourceTiles;
@@ -330,29 +323,13 @@ class VectorTile extends UrlTile {
if (tile.getState() < TileState.LOADED) {
tile.setState(TileState.LOADED);
} else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) {
this.removeSourceTiles(tile);
this.addSourceTiles(tile, sourceTiles);
tile.sourceTiles = sourceTiles;
}
}
this.sourceTileCache.expireCache({});
return sourceTiles;
}
/**
* @param {VectorRenderTile} tile Tile.
* @param {Array<import("../VectorTile").default>} sourceTiles Source tiles.
*/
addSourceTiles(tile, sourceTiles) {
this.sourceTilesByTileKey_[tile.getKey()] = sourceTiles;
}
/**
* @param {VectorRenderTile} tile Tile.
*/
removeSourceTiles(tile) {
delete this.sourceTilesByTileKey_[tile.getKey()];
}
/**
* @inheritDoc
*/

View File

@@ -316,10 +316,10 @@ describe('ol.renderer.canvas.VectorTileLayer', function() {
tileGrid: createXYZ()
});
source.sourceTileCache.set('0/0/0.mvt', sourceTile);
source.sourceTilesByTileKey_[sourceTile.getKey()] = [sourceTile];
executorGroup = {};
source.getTile = function() {
const tile = VectorTileSource.prototype.getTile.apply(source, arguments);
tile.sourceTiles = [sourceTile];
tile.executorGroups[getUid(layer)] = [executorGroup];
return tile;
};