Store source tiles on render tile instead of source
This commit is contained in:
@@ -67,6 +67,11 @@ class VectorRenderTile extends Tile {
|
||||
*/
|
||||
this.replayState_ = {};
|
||||
|
||||
/**
|
||||
* @type {Array<import("./VectorTile.js").default>}
|
||||
*/
|
||||
this.sourceTiles = null;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user