diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js index 079720e60e..8ccc72d1ac 100644 --- a/src/ol/renderer/canvas/canvastilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js @@ -81,13 +81,32 @@ ol.renderer.canvas.TileLayer = function(mapRenderer, tileLayer) { */ this.renderedTiles_ = null; - goog.events.listen( - tileLayer, ol.Object.getChangeEventType(ol.layer.LayerProperty.EXTENT), - this.handleLayerExtentChanged_, false, this); + /** + * @private + * @type {Array.} + */ + this.eventKeys_ = [ + goog.events.listen( + tileLayer, ol.Object.getChangeEventType(ol.layer.LayerProperty.EXTENT), + this.handleLayerExtentChanged_, false, this) + ]; + }; goog.inherits(ol.renderer.canvas.TileLayer, ol.renderer.canvas.Layer); +/** + * @inheritDoc + */ +ol.renderer.canvas.TileLayer.prototype.disposeInternal = function() { + for (var i = 0, ii = this.eventKeys_.length; i < ii; ++i) { + goog.events.unlistenByKey(this.eventKeys_[i]); + } + this.eventKeys_.length = 0; + goog.base(this, 'disposeInternal'); +}; + + /** * @inheritDoc */