From ec35ab52f66c191f7c855583354722c40dcdf239 Mon Sep 17 00:00:00 2001 From: johnd0e Date: Mon, 4 May 2020 14:24:08 +0300 Subject: [PATCH] GridLayer: fix _updateLevels and _removeTilesAtZoom (#7123) Because of particular quality of `for ... in` loop, type of `z` is 'string'. Thus condition `z === zoom` never met in _updateLevels. Considering wrong arg type, _removeTilesAtZoom also never had any action. Cleaner solution would be to iterate `Object.keys()` instead, but it is available only since IE 9. --- src/layer/tile/GridLayer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/layer/tile/GridLayer.js b/src/layer/tile/GridLayer.js index 5f18138c9..1d95091c6 100755 --- a/src/layer/tile/GridLayer.js +++ b/src/layer/tile/GridLayer.js @@ -365,6 +365,7 @@ export var GridLayer = Layer.extend({ if (zoom === undefined) { return undefined; } for (var z in this._levels) { + z = Number(z); if (this._levels[z].el.children.length || z === zoom) { this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z); this._onUpdateLevel(z); @@ -461,7 +462,7 @@ export var GridLayer = Layer.extend({ _invalidateAll: function () { for (var z in this._levels) { DomUtil.remove(this._levels[z].el); - this._onRemoveLevel(z); + this._onRemoveLevel(Number(z)); delete this._levels[z]; } this._removeAllTiles();