From 9d8243a7722186c2f136b0c2ad6caaad176fcbf3 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 5 Mar 2014 17:00:33 +0100 Subject: [PATCH 1/3] Set overlay map in 'add' and 'remove' event handler --- src/ol/map.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/ol/map.js b/src/ol/map.js index 8ee68204b9..b42ffa4445 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -30,6 +30,7 @@ goog.require('goog.style'); goog.require('goog.vec.Mat4'); goog.require('ol.BrowserFeature'); goog.require('ol.Collection'); +goog.require('ol.CollectionEventType'); goog.require('ol.FrameState'); goog.require('ol.IView'); goog.require('ol.MapBrowserEvent'); @@ -399,6 +400,22 @@ ol.Map = function(options) { overlay.setMap(this); }, this); + goog.events.listen(this.overlays_, ol.CollectionEventType.ADD, + /** + * @param {ol.CollectionEvent} event Collection event. + */ + function(event) { + event.element.setMap(this); + }, false, this); + + goog.events.listen(this.overlays_, ol.CollectionEventType.REMOVE, + /** + * @param {ol.CollectionEvent} event Collection event. + */ + function(event) { + event.element.setMap(null); + }, false, this); + }; goog.inherits(ol.Map, ol.Object); @@ -449,7 +466,6 @@ ol.Map.prototype.addOverlay = function(overlay) { var overlays = this.getOverlays(); goog.asserts.assert(goog.isDef(overlays)); overlays.push(overlay); - overlay.setMap(this); }; @@ -1077,7 +1093,6 @@ ol.Map.prototype.removeOverlay = function(overlay) { var overlays = this.getOverlays(); goog.asserts.assert(goog.isDef(overlays)); if (goog.isDef(overlays.remove(overlay))) { - overlay.setMap(null); return overlay; } return undefined; From 3dc9d296eb0aafe19131b12c45f1bba0be22b52e Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 6 Mar 2014 09:01:50 +0100 Subject: [PATCH 2/3] Set interaction map in 'add' and 'remove' event handler --- src/ol/map.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ol/map.js b/src/ol/map.js index b42ffa4445..ef3cf7007f 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -391,6 +391,22 @@ ol.Map = function(options) { interaction.setMap(this); }, this); + goog.events.listen(this.interactions_, ol.CollectionEventType.ADD, + /** + * @param {ol.CollectionEvent} event Collection event. + */ + function(event) { + event.element.setMap(this); + }, false, this); + + goog.events.listen(this.interactions_, ol.CollectionEventType.REMOVE, + /** + * @param {ol.CollectionEvent} event Collection event. + */ + function(event) { + event.element.setMap(null); + }, false, this); + this.overlays_.forEach( /** * @param {ol.Overlay} overlay Overlay. @@ -441,7 +457,6 @@ ol.Map.prototype.addInteraction = function(interaction) { var interactions = this.getInteractions(); goog.asserts.assert(goog.isDef(interactions)); interactions.push(interaction); - interaction.setMap(this); }; @@ -1061,7 +1076,6 @@ ol.Map.prototype.removeInteraction = function(interaction) { var interactions = this.getInteractions(); goog.asserts.assert(goog.isDef(interactions)); if (goog.isDef(interactions.remove(interaction))) { - interaction.setMap(null); removed = interaction; } return removed; From f0f2a2d2b04f2b8cdc29e0e99e9583e6b14796ac Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 6 Mar 2014 09:03:38 +0100 Subject: [PATCH 3/3] Set control map in 'add' and 'remove' event handler --- src/ol/map.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ol/map.js b/src/ol/map.js index ef3cf7007f..54829e887c 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -382,6 +382,22 @@ ol.Map = function(options) { control.setMap(this); }, this); + goog.events.listen(this.controls_, ol.CollectionEventType.ADD, + /** + * @param {ol.CollectionEvent} event Collection event. + */ + function(event) { + event.element.setMap(this); + }, false, this); + + goog.events.listen(this.controls_, ol.CollectionEventType.REMOVE, + /** + * @param {ol.CollectionEvent} event Collection event. + */ + function(event) { + event.element.setMap(null); + }, false, this); + this.interactions_.forEach( /** * @param {ol.interaction.Interaction} interaction Interaction. @@ -445,7 +461,6 @@ ol.Map.prototype.addControl = function(control) { var controls = this.getControls(); goog.asserts.assert(goog.isDef(controls)); controls.push(control); - control.setMap(this); }; @@ -1058,7 +1073,6 @@ ol.Map.prototype.removeControl = function(control) { var controls = this.getControls(); goog.asserts.assert(goog.isDef(controls)); if (goog.isDef(controls.remove(control))) { - control.setMap(null); return control; } return undefined;