diff --git a/src/ol/renderer/dom/tilelayer.js b/src/ol/renderer/dom/tilelayer.js index 24de2b5eac..67f2199460 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[z] = {}; + tilesToDrawByZ[String(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[z][key] = tile; + tilesToDrawByZ[String(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[z][key] = tile; + tilesToDrawByZ[String(z)][key] = tile; } /** @@ -210,10 +210,12 @@ 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); @@ -232,17 +234,16 @@ ol.renderer.dom.TileLayer.prototype.render = function() { }, this); - /** @type {Array.} */ var zs = goog.object.getKeys(tilesToDrawByZ); - goog.array.sort(zs); + zs.sort(function(a, b) {return a - b}); 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[tileZ]; + var tileZ = +zs[i]; + var tilesToDraw = tilesToDrawByZ[String(tileZ)]; var tileOffset = this.getTileOffset_(tileZ, mapResolution); for (var key in tilesToDraw) { var tile = tilesToDraw[key];