Select style multiple select interactions removed

This fixes issue 10486 by removing the event listeners when an
interaction is removed from a map.
This commit is contained in:
Geert Premereur
2020-01-07 11:28:19 +01:00
committed by Andreas Hocevar
parent c196f2f7b0
commit 10c7f08fa4

View File

@@ -167,6 +167,16 @@ class Select extends Interaction {
const options = opt_options ? opt_options : {};
/**
* @private
*/
this.boundAddFeature_ = this.addFeature_.bind(this);
/**
* @private
*/
this.boundRemoveFeature_ = this.removeFeature_.bind(this);
/**
* @private
* @type {import("../events/condition.js").Condition}
@@ -250,9 +260,8 @@ class Select extends Interaction {
*/
this.featureLayerAssociation_ = {};
const features = this.getFeatures();
features.addEventListener(CollectionEventType.ADD, this.addFeature_.bind(this));
features.addEventListener(CollectionEventType.REMOVE, this.removeFeature_.bind(this));
this.features_.addEventListener(CollectionEventType.ADD, this.boundAddFeature_);
this.features_.addEventListener(CollectionEventType.REMOVE, this.boundRemoveFeature_);
}
/**
@@ -323,6 +332,10 @@ class Select extends Interaction {
if (map && this.style_) {
this.features_.forEach(this.applySelectedStyle_.bind(this));
}
if (!map) {
this.features_.removeEventListener(CollectionEventType.ADD, this.boundAddFeature_);
this.features_.removeEventListener(CollectionEventType.REMOVE, this.boundRemoveFeature_);
}
}
/**