From eb43cf14c1c3b609b9dcbad18b2d635fff779609 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 18 Jul 2012 23:37:12 +0200 Subject: [PATCH] Clean up layer renderers when layers changes --- src/ol/map.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/ol/map.js b/src/ol/map.js index 1e81b6dc7c..0a1fd4ced6 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -442,12 +442,21 @@ ol.Map.prototype.handleLayersSetAt = function(event) { /** */ ol.Map.prototype.handleLayersChanged = function() { + var layerRenderers = goog.object.getValues(this.layerRenderers); + goog.array.forEach(layerRenderers, function(layerRenderer) { + this.removeLayerRenderer(layerRenderer); + }, this); + this.layerRenderers = {}; if (!goog.isNull(this.layersListenerKeys_)) { goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey); this.layersListenerKeys_ = null; } var layers = this.getLayers(); if (goog.isDefAndNotNull(layers)) { + goog.array.forEach(layers.getArray(), function(layer) { + var layerRenderer = this.createLayerRenderer(layer); + this.setLayerRenderer(layer, layerRenderer); + }, this); this.layersListenerKeys_ = [ goog.events.listen(layers, ol.ArrayEventType.INSERT_AT, this.handleLayersInsertAt, false, this),