Merge pull request #6972 from ahocevar/loaded-error-tiles
Handle error tiles properly
This commit is contained in:
@@ -144,9 +144,14 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function(frameState, layer
|
|||||||
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
||||||
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
|
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
|
||||||
tile = tileSource.getTile(z, x, y, pixelRatio, projection);
|
tile = tileSource.getTile(z, x, y, pixelRatio, projection);
|
||||||
// When useInterimTilesOnError is false, we consider the error tile as loaded.
|
if (tile.getState() == ol.TileState.ERROR) {
|
||||||
if (tile.getState() == ol.TileState.ERROR && !this.getLayer().getUseInterimTilesOnError()) {
|
if (!tileLayer.getUseInterimTilesOnError()) {
|
||||||
tile.setState(ol.TileState.LOADED);
|
// When useInterimTilesOnError is false, we consider the error tile as loaded.
|
||||||
|
tile.setState(ol.TileState.LOADED);
|
||||||
|
} else if (tileLayer.getPreload() > 0) {
|
||||||
|
// Preloaded tiles for lower resolutions might have finished loading.
|
||||||
|
newTiles = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!this.isDrawableTile_(tile)) {
|
if (!this.isDrawableTile_(tile)) {
|
||||||
tile = tile.getInterimTile();
|
tile = tile.getInterimTile();
|
||||||
|
|||||||
@@ -244,17 +244,18 @@ ol.VectorImageTile.prototype.load = function() {
|
|||||||
*/
|
*/
|
||||||
ol.VectorImageTile.prototype.finishLoading_ = function() {
|
ol.VectorImageTile.prototype.finishLoading_ = function() {
|
||||||
var errors = false;
|
var errors = false;
|
||||||
var tile;
|
var loaded = this.tileKeys.length;
|
||||||
for (var i = this.tileKeys.length - 1; i >= 0; --i) {
|
var state;
|
||||||
tile = this.getTile(this.tileKeys[i]);
|
for (var i = loaded - 1; i >= 0; --i) {
|
||||||
if (tile.getState() == ol.TileState.ERROR) {
|
state = this.getTile(this.tileKeys[i]).getState();
|
||||||
errors = true;
|
if (state != ol.TileState.LOADED) {
|
||||||
}
|
if (state == ol.TileState.ERROR) {
|
||||||
if (tile.getState() != ol.TileState.LOADED) {
|
errors = true;
|
||||||
this.tileKeys.splice(i, 1);
|
}
|
||||||
|
--loaded;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.setState(this.tileKeys.length > 0 ?
|
this.setState(loaded > 0 ?
|
||||||
ol.TileState.LOADED :
|
ol.TileState.LOADED :
|
||||||
(errors ? ol.TileState.ERROR : ol.TileState.EMPTY));
|
(errors ? ol.TileState.ERROR : ol.TileState.EMPTY));
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user