Store source tiles on render tile instead of source
This commit is contained in:
@@ -67,6 +67,11 @@ class VectorRenderTile extends Tile {
|
|||||||
*/
|
*/
|
||||||
this.replayState_ = {};
|
this.replayState_ = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Array<import("./VectorTile.js").default>}
|
||||||
|
*/
|
||||||
|
this.sourceTiles = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {number}
|
* @type {number}
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -144,12 +144,6 @@ class VectorTile extends UrlTile {
|
|||||||
*/
|
*/
|
||||||
this.sourceTileCache = new TileCache(this.tileCache.highWaterMark);
|
this.sourceTileCache = new TileCache(this.tileCache.highWaterMark);
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @type {Object<string, Array<import("../VectorTile.js").default>>}
|
|
||||||
*/
|
|
||||||
this.sourceTilesByTileKey_ = {};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
@@ -229,7 +223,6 @@ class VectorTile extends UrlTile {
|
|||||||
clear() {
|
clear() {
|
||||||
this.tileCache.clear();
|
this.tileCache.clear();
|
||||||
this.sourceTileCache.clear();
|
this.sourceTileCache.clear();
|
||||||
this.sourceTilesByTileKey_ = {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -254,7 +247,7 @@ class VectorTile extends UrlTile {
|
|||||||
const sourceZ = sourceTileGrid.getZForResolution(resolution, 1);
|
const sourceZ = sourceTileGrid.getZForResolution(resolution, 1);
|
||||||
const minZoom = sourceTileGrid.getMinZoom();
|
const minZoom = sourceTileGrid.getMinZoom();
|
||||||
|
|
||||||
const previousSourceTiles = this.sourceTilesByTileKey_[tile.getKey()];
|
const previousSourceTiles = tile.sourceTiles;
|
||||||
let sourceTiles, covered, loadedZ;
|
let sourceTiles, covered, loadedZ;
|
||||||
if (previousSourceTiles && previousSourceTiles.length > 0 && previousSourceTiles[0].tileCoord[0] === sourceZ) {
|
if (previousSourceTiles && previousSourceTiles.length > 0 && previousSourceTiles[0].tileCoord[0] === sourceZ) {
|
||||||
sourceTiles = previousSourceTiles;
|
sourceTiles = previousSourceTiles;
|
||||||
@@ -330,29 +323,13 @@ class VectorTile extends UrlTile {
|
|||||||
if (tile.getState() < TileState.LOADED) {
|
if (tile.getState() < TileState.LOADED) {
|
||||||
tile.setState(TileState.LOADED);
|
tile.setState(TileState.LOADED);
|
||||||
} else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) {
|
} else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) {
|
||||||
this.removeSourceTiles(tile);
|
tile.sourceTiles = sourceTiles;
|
||||||
this.addSourceTiles(tile, sourceTiles);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.sourceTileCache.expireCache({});
|
this.sourceTileCache.expireCache({});
|
||||||
return sourceTiles;
|
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
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -316,10 +316,10 @@ describe('ol.renderer.canvas.VectorTileLayer', function() {
|
|||||||
tileGrid: createXYZ()
|
tileGrid: createXYZ()
|
||||||
});
|
});
|
||||||
source.sourceTileCache.set('0/0/0.mvt', sourceTile);
|
source.sourceTileCache.set('0/0/0.mvt', sourceTile);
|
||||||
source.sourceTilesByTileKey_[sourceTile.getKey()] = [sourceTile];
|
|
||||||
executorGroup = {};
|
executorGroup = {};
|
||||||
source.getTile = function() {
|
source.getTile = function() {
|
||||||
const tile = VectorTileSource.prototype.getTile.apply(source, arguments);
|
const tile = VectorTileSource.prototype.getTile.apply(source, arguments);
|
||||||
|
tile.sourceTiles = [sourceTile];
|
||||||
tile.executorGroups[getUid(layer)] = [executorGroup];
|
tile.executorGroups[getUid(layer)] = [executorGroup];
|
||||||
return tile;
|
return tile;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user