Use a loop rather than tileRange.forEachTileCoord

This commit is contained in:
Tom Payne
2013-01-14 16:00:19 +01:00
parent 57b25693af
commit 0916f14536
2 changed files with 97 additions and 89 deletions

View File

@@ -96,23 +96,25 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
var allTilesLoaded = true;
tilesToDrawByZ[z] = {};
tileRange.forEachTileCoord(z, function(tileCoord) {
var tile = tileSource.getTile(tileCoord);
var tile, tileCenter, tileCoord, tileState, x, y;
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
tileCoord = new ol.TileCoord(z, x, y);
tile = tileSource.getTile(tileCoord);
if (goog.isNull(tile)) {
return;
continue;
}
var tileState = tile.getState();
tileState = tile.getState();
if (tileState == ol.TileState.IDLE) {
var tileCenter = tileGrid.getTileCoordCenter(tileCoord);
tileCenter = tileGrid.getTileCoordCenter(tileCoord);
frameState.tileQueue.enqueue(tile, tileCenter, tileResolution);
} else if (tileState == ol.TileState.LOADED) {
tilesToDrawByZ[z][tile.tileCoord.toString()] = tile;
return;
tilesToDrawByZ[z][tileCoord.toString()] = tile;
continue;
} else if (tileState == ol.TileState.ERROR) {
return;
continue;
}
allTilesLoaded = false;
@@ -140,8 +142,9 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
});
return fullyCovered;
});
}
}, this);
}
/** @type {Array.<number>} */
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);

View File

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