From b4d2ab5c138d0cf886bad3d07f1bb3add03b6cc3 Mon Sep 17 00:00:00 2001 From: Austin Hyde Date: Mon, 27 Jan 2014 11:22:21 -0500 Subject: [PATCH] Fix issue with DOM layers in wrong order When removing/inserting layers back-to-back, the layer elements can get out of order because createLayerRenderer always appends to the layer pane. This makes it always reattach the layer node at the correct index, ensuring correct layer ordering. --- src/ol/renderer/dom/dommaprenderer.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ol/renderer/dom/dommaprenderer.js b/src/ol/renderer/dom/dommaprenderer.js index f5c7a74d87..54d4c3a251 100644 --- a/src/ol/renderer/dom/dommaprenderer.js +++ b/src/ol/renderer/dom/dommaprenderer.js @@ -71,7 +71,6 @@ ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) { goog.asserts.fail(); return null; } - goog.dom.appendChild(this.layersPane_, layerRenderer.getTarget()); return layerRenderer; }; @@ -94,7 +93,9 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) { var i, ii, layer, layerRenderer, layerState; for (i = 0, ii = layersArray.length; i < ii; ++i) { layer = layersArray[i]; - layerRenderer = this.getLayerRenderer(layer); + layerRenderer = /** @type {ol.renderer.dom.Layer} */ ( + this.getLayerRenderer(layer)); + goog.dom.insertChildAt(this.layersPane_, layerRenderer.getTarget(), i); layerState = frameState.layerStates[goog.getUid(layer)]; if (layerState.sourceState == ol.source.State.READY) { layerRenderer.prepareFrame(frameState, layerState);