Use a loop rather than tileRange.forEachTileCoord
This commit is contained in:
@@ -96,23 +96,25 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
|||||||
var allTilesLoaded = true;
|
var allTilesLoaded = true;
|
||||||
|
|
||||||
tilesToDrawByZ[z] = {};
|
tilesToDrawByZ[z] = {};
|
||||||
tileRange.forEachTileCoord(z, function(tileCoord) {
|
var tile, tileCenter, tileCoord, tileState, x, y;
|
||||||
|
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
||||||
var tile = tileSource.getTile(tileCoord);
|
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
|
||||||
|
|
||||||
|
tileCoord = new ol.TileCoord(z, x, y);
|
||||||
|
tile = tileSource.getTile(tileCoord);
|
||||||
if (goog.isNull(tile)) {
|
if (goog.isNull(tile)) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var tileState = tile.getState();
|
tileState = tile.getState();
|
||||||
if (tileState == ol.TileState.IDLE) {
|
if (tileState == ol.TileState.IDLE) {
|
||||||
var tileCenter = tileGrid.getTileCoordCenter(tileCoord);
|
tileCenter = tileGrid.getTileCoordCenter(tileCoord);
|
||||||
frameState.tileQueue.enqueue(tile, tileCenter, tileResolution);
|
frameState.tileQueue.enqueue(tile, tileCenter, tileResolution);
|
||||||
} else if (tileState == ol.TileState.LOADED) {
|
} else if (tileState == ol.TileState.LOADED) {
|
||||||
tilesToDrawByZ[z][tile.tileCoord.toString()] = tile;
|
tilesToDrawByZ[z][tileCoord.toString()] = tile;
|
||||||
return;
|
continue;
|
||||||
} else if (tileState == ol.TileState.ERROR) {
|
} else if (tileState == ol.TileState.ERROR) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
allTilesLoaded = false;
|
allTilesLoaded = false;
|
||||||
@@ -140,8 +142,9 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
|||||||
});
|
});
|
||||||
return fullyCovered;
|
return fullyCovered;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}, this);
|
}
|
||||||
|
|
||||||
/** @type {Array.<number>} */
|
/** @type {Array.<number>} */
|
||||||
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
||||||
|
|||||||
@@ -354,31 +354,33 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
var allTilesLoaded = true;
|
var allTilesLoaded = true;
|
||||||
|
|
||||||
tilesToDrawByZ[z] = {};
|
tilesToDrawByZ[z] = {};
|
||||||
tileRange.forEachTileCoord(z, function(tileCoord) {
|
var deltaX, deltaY, priority, tile, tileCenter, tileCoord, tileState, x, y;
|
||||||
|
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
||||||
var tile = tileSource.getTile(tileCoord);
|
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
|
||||||
|
|
||||||
|
tileCoord = new ol.TileCoord(z, x, y);
|
||||||
|
tile = tileSource.getTile(tileCoord);
|
||||||
if (goog.isNull(tile)) {
|
if (goog.isNull(tile)) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var tileState = tile.getState();
|
tileState = tile.getState();
|
||||||
if (tileState == ol.TileState.IDLE) {
|
if (tileState == ol.TileState.IDLE) {
|
||||||
var tileCenter = tileGrid.getTileCoordCenter(tileCoord);
|
tileCenter = tileGrid.getTileCoordCenter(tileCoord);
|
||||||
frameState.tileQueue.enqueue(tile, tileCenter, tileResolution);
|
frameState.tileQueue.enqueue(tile, tileCenter, tileResolution);
|
||||||
} else if (tileState == ol.TileState.LOADED) {
|
} else if (tileState == ol.TileState.LOADED) {
|
||||||
if (mapRenderer.isTileTextureLoaded(tile)) {
|
if (mapRenderer.isTileTextureLoaded(tile)) {
|
||||||
tilesToDrawByZ[z][tileCoord.toString()] = tile;
|
tilesToDrawByZ[z][tileCoord.toString()] = tile;
|
||||||
return;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
var tileCenter = tileGrid.getTileCoordCenter(tileCoord);
|
tileCenter = tileGrid.getTileCoordCenter(tileCoord);
|
||||||
var deltaX = tileCenter.x - center.x;
|
deltaX = tileCenter.x - center.x;
|
||||||
var deltaY = tileCenter.y - center.y;
|
deltaY = tileCenter.y - center.y;
|
||||||
var priority = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
|
priority = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
|
||||||
tilesToLoad.enqueue(priority, tile);
|
tilesToLoad.enqueue(priority, tile);
|
||||||
}
|
}
|
||||||
} else if (tileState == ol.TileState.ERROR) {
|
} else if (tileState == ol.TileState.ERROR) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
allTilesLoaded = false;
|
allTilesLoaded = false;
|
||||||
@@ -395,7 +397,8 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
}
|
}
|
||||||
var tile = tileSource.getTile(tileCoord);
|
var tile = tileSource.getTile(tileCoord);
|
||||||
if (!goog.isNull(tile) &&
|
if (!goog.isNull(tile) &&
|
||||||
tile.getState() == ol.TileState.LOADED) {
|
tile.getState() == ol.TileState.LOADED &&
|
||||||
|
mapRenderer.isTileTextureLoaded(tile)) {
|
||||||
if (!tilesToDrawByZ[z]) {
|
if (!tilesToDrawByZ[z]) {
|
||||||
tilesToDrawByZ[z] = {};
|
tilesToDrawByZ[z] = {};
|
||||||
}
|
}
|
||||||
@@ -407,7 +410,9 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
return fullyCovered;
|
return fullyCovered;
|
||||||
});
|
});
|
||||||
|
|
||||||
}, this);
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** @type {Array.<number>} */
|
/** @type {Array.<number>} */
|
||||||
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
||||||
|
|||||||
Reference in New Issue
Block a user