From ed197f3cfe9b1962e8586e0f71b91a51615dfb25 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Tue, 16 Oct 2012 10:59:53 +0200 Subject: [PATCH 1/2] Revert "Two lessons learned" This reverts commit f8462460bf82f46484149d52822d62a6ab660cfc. --- src/ol/renderer/dom/tilelayer.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/ol/renderer/dom/tilelayer.js b/src/ol/renderer/dom/tilelayer.js index 67f2199460..24de2b5eac 100644 --- a/src/ol/renderer/dom/tilelayer.js +++ b/src/ol/renderer/dom/tilelayer.js @@ -169,10 +169,10 @@ ol.renderer.dom.TileLayer.prototype.render = function() { } /** - * @type {Object.>} + * @type {Object.>} */ var tilesToDrawByZ = {}; - tilesToDrawByZ[String(z)] = {}; + tilesToDrawByZ[z] = {}; var tileRange = tileGrid.getTileRangeForExtentAndResolution(mapExtent, mapResolution); @@ -188,7 +188,7 @@ ol.renderer.dom.TileLayer.prototype.render = function() { var key = tile.tileCoord.toString(); if (tile.getState() == ol.TileState.LOADED) { - tilesToDrawByZ[String(z)][key] = tile; + tilesToDrawByZ[z][key] = tile; return; } else { if (!(key in this.loadingTiles_)) { @@ -198,7 +198,7 @@ ol.renderer.dom.TileLayer.prototype.render = function() { tile.load(); } // TODO: only append after load? - tilesToDrawByZ[String(z)][key] = tile; + tilesToDrawByZ[z][key] = tile; } /** @@ -210,12 +210,10 @@ ol.renderer.dom.TileLayer.prototype.render = function() { tileGrid.forEachTileCoordParentTileRange( tileCoord, function(altZ, altTileRange) { - altZ = String(altZ); var fullyCovered = true; altTileRange.forEachTileCoord(altZ, function(altTileCoord) { var tileKey = altTileCoord.toString(); - if (tilesToDrawByZ[altZ] && - tilesToDrawByZ[altZ][tileKey]) { + if (tilesToDrawByZ[altZ] && tilesToDrawByZ[altZ][tileKey]) { return; } var altTile = tileSource.getTile(altTileCoord); @@ -234,16 +232,17 @@ ol.renderer.dom.TileLayer.prototype.render = function() { }, this); + /** @type {Array.} */ var zs = goog.object.getKeys(tilesToDrawByZ); - zs.sort(function(a, b) {return a - b}); + goog.array.sort(zs); var fragment = document.createDocumentFragment(); var altFragment = document.createDocumentFragment(); var newTiles = false; var newAltTiles = false; for (var i = 0, ii = zs.length; i < ii; ++i) { - var tileZ = +zs[i]; - var tilesToDraw = tilesToDrawByZ[String(tileZ)]; + var tileZ = zs[i]; + var tilesToDraw = tilesToDrawByZ[tileZ]; var tileOffset = this.getTileOffset_(tileZ, mapResolution); for (var key in tilesToDraw) { var tile = tilesToDraw[key]; From 3e6d3748592ddcd2d09f170b3cb2940de7e54f9f Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Tue, 16 Oct 2012 11:04:56 +0200 Subject: [PATCH 2/2] Ensure z as object keys are sorted as numbers --- src/ol/renderer/dom/tilelayer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ol/renderer/dom/tilelayer.js b/src/ol/renderer/dom/tilelayer.js index 24de2b5eac..477eae9f3d 100644 --- a/src/ol/renderer/dom/tilelayer.js +++ b/src/ol/renderer/dom/tilelayer.js @@ -233,7 +233,7 @@ ol.renderer.dom.TileLayer.prototype.render = function() { }, this); /** @type {Array.} */ - var zs = goog.object.getKeys(tilesToDrawByZ); + var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var fragment = document.createDocumentFragment();