diff --git a/src/ol/pluggablemap.js b/src/ol/pluggablemap.js index c59f5ee821..b4b7963020 100644 --- a/src/ol/pluggablemap.js +++ b/src/ol/pluggablemap.js @@ -428,7 +428,6 @@ ol.PluggableMap.prototype.addOverlayInternal_ = function(overlay) { */ ol.PluggableMap.prototype.disposeInternal = function() { this.mapBrowserEventHandler_.dispose(); - this.renderer_.dispose(); ol.events.unlisten(this.viewport_, ol.events.EventType.WHEEL, this.handleBrowserEvent, this); ol.events.unlisten(this.viewport_, ol.events.EventType.MOUSEWHEEL, @@ -941,6 +940,7 @@ ol.PluggableMap.prototype.handleTargetChanged_ = function() { } if (!targetElement) { + this.renderer_.removeLayerRenderers(); ol.dom.removeNode(this.viewport_); if (this.handleResize_ !== undefined) { window.removeEventListener(ol.events.EventType.RESIZE, diff --git a/src/ol/renderer/map.js b/src/ol/renderer/map.js index 732cdba063..64b38a466e 100644 --- a/src/ol/renderer/map.js +++ b/src/ol/renderer/map.js @@ -68,11 +68,11 @@ ol.renderer.Map.prototype.calculateMatrices2D = function(frameState) { /** - * @inheritDoc + * Removes all layer renderers. */ -ol.renderer.Map.prototype.disposeInternal = function() { - for (var id in this.layerRenderers_) { - this.layerRenderers_[id].dispose(); +ol.renderer.Map.prototype.removeLayerRenderers = function() { + for (var key in this.layerRenderers_) { + this.removeLayerRendererByKey_(key).dispose(); } };