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
+13 -10
View File
@@ -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);
+19 -14
View File
@@ -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);