Merge pull request #9978 from ahocevar/tilequeue-loading

Handle empty source tiles and queue them properly
This commit is contained in:
Andreas Hocevar
2019-09-24 16:05:05 +02:00
committed by GitHub
2 changed files with 9 additions and 5 deletions

View File

@@ -112,10 +112,12 @@ class TileQueue extends PriorityQueue {
if (state === TileState.ABORT) { if (state === TileState.ABORT) {
abortedTiles = true; abortedTiles = true;
} else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) { } else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {
this.tilesLoadingKeys_[tileKey] = true;
++this.tilesLoading_;
++newLoads;
tile.load(); tile.load();
if (tile.getState() === TileState.LOADING) {
this.tilesLoadingKeys_[tileKey] = true;
++this.tilesLoading_;
++newLoads;
}
} }
} }
if (newLoads === 0 && abortedTiles) { if (newLoads === 0 && abortedTiles) {

View File

@@ -236,15 +236,17 @@ class VectorTile extends UrlTile {
empty = false; empty = false;
sourceTile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this)); sourceTile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this));
sourceTile.load(); sourceTile.load();
} else {
sourceTile = null;
} }
} else { } else {
empty = false; empty = false;
} }
covered = false; covered = false;
if (!sourceTile) { if (sourceTile === undefined) {
return; return;
} }
if (sourceTile.getState() !== TileState.EMPTY && tile.getState() === TileState.IDLE) { if (sourceTile !== null && tile.getState() === TileState.IDLE) {
tile.loadingSourceTiles++; tile.loadingSourceTiles++;
const key = listen(sourceTile, EventType.CHANGE, function() { const key = listen(sourceTile, EventType.CHANGE, function() {
const state = sourceTile.getState(); const state = sourceTile.getState();