Remove layer renderers when viewport is removed

This commit is contained in:
Andreas Hocevar
2017-11-22 23:49:25 +01:00
parent 5d71dde8dd
commit 3e574529ad
2 changed files with 5 additions and 5 deletions

View File

@@ -428,7 +428,6 @@ ol.PluggableMap.prototype.addOverlayInternal_ = function(overlay) {
*/ */
ol.PluggableMap.prototype.disposeInternal = function() { ol.PluggableMap.prototype.disposeInternal = function() {
this.mapBrowserEventHandler_.dispose(); this.mapBrowserEventHandler_.dispose();
this.renderer_.dispose();
ol.events.unlisten(this.viewport_, ol.events.EventType.WHEEL, ol.events.unlisten(this.viewport_, ol.events.EventType.WHEEL,
this.handleBrowserEvent, this); this.handleBrowserEvent, this);
ol.events.unlisten(this.viewport_, ol.events.EventType.MOUSEWHEEL, ol.events.unlisten(this.viewport_, ol.events.EventType.MOUSEWHEEL,
@@ -941,6 +940,7 @@ ol.PluggableMap.prototype.handleTargetChanged_ = function() {
} }
if (!targetElement) { if (!targetElement) {
this.renderer_.removeLayerRenderers();
ol.dom.removeNode(this.viewport_); ol.dom.removeNode(this.viewport_);
if (this.handleResize_ !== undefined) { if (this.handleResize_ !== undefined) {
window.removeEventListener(ol.events.EventType.RESIZE, window.removeEventListener(ol.events.EventType.RESIZE,

View File

@@ -68,11 +68,11 @@ ol.renderer.Map.prototype.calculateMatrices2D = function(frameState) {
/** /**
* @inheritDoc * Removes all layer renderers.
*/ */
ol.renderer.Map.prototype.disposeInternal = function() { ol.renderer.Map.prototype.removeLayerRenderers = function() {
for (var id in this.layerRenderers_) { for (var key in this.layerRenderers_) {
this.layerRenderers_[id].dispose(); this.removeLayerRendererByKey_(key).dispose();
} }
}; };