Merge pull request #9778 from ahocevar/faster-getsourcetiles
Return existing source tiles if at target resolution
This commit is contained in:
@@ -179,9 +179,7 @@ class VectorTile extends UrlTile {
|
|||||||
* @return {Array<import("../VectorTile").default>} Tile keys.
|
* @return {Array<import("../VectorTile").default>} Tile keys.
|
||||||
*/
|
*/
|
||||||
getSourceTiles(pixelRatio, projection, tile) {
|
getSourceTiles(pixelRatio, projection, tile) {
|
||||||
const sourceTiles = [];
|
|
||||||
const urlTileCoord = tile.wrappedTileCoord;
|
const urlTileCoord = tile.wrappedTileCoord;
|
||||||
if (urlTileCoord) {
|
|
||||||
const tileGrid = this.getTileGridForProjection(projection);
|
const tileGrid = this.getTileGridForProjection(projection);
|
||||||
const extent = tileGrid.getTileCoordExtent(urlTileCoord);
|
const extent = tileGrid.getTileCoordExtent(urlTileCoord);
|
||||||
const z = urlTileCoord[0];
|
const z = urlTileCoord[0];
|
||||||
@@ -196,6 +194,12 @@ 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_[getKey(tile.tileCoord)];
|
||||||
|
if (previousSourceTiles && previousSourceTiles.length > 0 && previousSourceTiles[0].tileCoord[0] === sourceZ) {
|
||||||
|
return previousSourceTiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sourceTiles = [];
|
||||||
let loadedZ = sourceZ + 1;
|
let loadedZ = sourceZ + 1;
|
||||||
let covered, empty;
|
let covered, empty;
|
||||||
do {
|
do {
|
||||||
@@ -265,7 +269,6 @@ class VectorTile extends UrlTile {
|
|||||||
if (covered || empty) {
|
if (covered || empty) {
|
||||||
tile.hifi = sourceZ === loadedZ;
|
tile.hifi = sourceZ === loadedZ;
|
||||||
tile.sourceZ = loadedZ;
|
tile.sourceZ = loadedZ;
|
||||||
const previousSourceTiles = this.sourceTilesByTileKey_[getKey(tile.tileCoord)];
|
|
||||||
if (tile.getState() < TileState.LOADED) {
|
if (tile.getState() < TileState.LOADED) {
|
||||||
tile.setState(empty ? TileState.EMPTY : TileState.LOADED);
|
tile.setState(empty ? TileState.EMPTY : TileState.LOADED);
|
||||||
} else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) {
|
} else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) {
|
||||||
@@ -273,7 +276,6 @@ class VectorTile extends UrlTile {
|
|||||||
this.addSourceTiles(tile, sourceTiles);
|
this.addSourceTiles(tile, sourceTiles);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return sourceTiles;
|
return sourceTiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user