Making the condition for adding to selection configurable

This commit is contained in:
ahocevar
2013-09-27 11:45:15 +02:00
parent c556ddd593
commit f8e891ff15
2 changed files with 13 additions and 3 deletions

View File

@@ -311,9 +311,12 @@
/**
* @typedef {Object} ol.interaction.SelectOptions
* @property {ol.interaction.ConditionType|undefined} addCondition A conditional
* modifier (e.g. shift key) that determines if the selection is added to
* the current selection. Default is when holding the shift key only.
* @property {ol.interaction.ConditionType|undefined} condition A conditional
* modifier (i.e. Shift key) that determines if the interaction is active
* or not, default is on mouse click only.
* modifier (e.g. shift key) that determines if the interaction is active
* (i.e. selection occurs) or not. Default is on mouse click only.
* @property {undefined|function(ol.layer.Layer):boolean} layerFilter Filter
* function to restrict selection to a subset of layers.
*/

View File

@@ -28,6 +28,13 @@ ol.interaction.Select = function(opt_options) {
this.condition_ = goog.isDef(options.condition) ?
options.condition : ol.interaction.condition.clickOnly;
/**
* @private
* @type {ol.interaction.ConditionType}
*/
this.addCondition_ = goog.isDef(options.addCondition) ?
options.addCondition : ol.interaction.condition.shiftKeyOnly;
/**
* Mapping between original features and cloned features on selection layers.
* @type {Object.<*,Object.<*,ol.Feature>>}
@@ -65,7 +72,7 @@ ol.interaction.Select.prototype.handleMapBrowserEvent =
if (!goog.isNull(this.layerFilter_)) {
layers = goog.array.filter(layers, this.layerFilter_);
}
var clear = !ol.interaction.condition.shiftKeyOnly(mapBrowserEvent);
var clear = !this.addCondition_(mapBrowserEvent);
var that = this;
var select = function(featuresByLayer) {