Merge pull request #1173 from tschaub/map-interaction
Give interactions a reference to their map.
This commit is contained in:
@@ -12,6 +12,22 @@ goog.require('ol.easing');
|
||||
* @constructor
|
||||
*/
|
||||
ol.interaction.Interaction = function() {
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.Map}
|
||||
*/
|
||||
this.map_ = null;
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the map associated with this interaction.
|
||||
* @return {ol.Map} Map.
|
||||
*/
|
||||
ol.interaction.Interaction.prototype.getMap = function() {
|
||||
return this.map_;
|
||||
};
|
||||
|
||||
|
||||
@@ -25,6 +41,17 @@ ol.interaction.Interaction.prototype.handleMapBrowserEvent =
|
||||
goog.abstractMethod;
|
||||
|
||||
|
||||
/**
|
||||
* Remove the interaction from its current map and attach it to the new map.
|
||||
* Subclasses may set up event handlers to get notified about changes to
|
||||
* the map here.
|
||||
* @param {ol.Map} map Map.
|
||||
*/
|
||||
ol.interaction.Interaction.prototype.setMap = function(map) {
|
||||
this.map_ = map;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Map} map Map.
|
||||
* @param {ol.View2D} view View.
|
||||
|
||||
@@ -356,6 +356,14 @@ ol.Map = function(options) {
|
||||
control.setMap(this);
|
||||
}, this);
|
||||
|
||||
this.interactions_.forEach(
|
||||
/**
|
||||
* @param {ol.interaction.Interaction} interaction Interaction.
|
||||
*/
|
||||
function(interaction) {
|
||||
interaction.setMap(this);
|
||||
}, this);
|
||||
|
||||
this.overlays_.forEach(
|
||||
/**
|
||||
* @param {ol.Overlay} overlay Overlay.
|
||||
@@ -381,6 +389,18 @@ ol.Map.prototype.addControl = function(control) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Add the given interaction to the map.
|
||||
* @param {ol.interaction.Interaction} interaction Interaction to add.
|
||||
*/
|
||||
ol.Map.prototype.addInteraction = function(interaction) {
|
||||
var interactions = this.getInteractions();
|
||||
goog.asserts.assert(goog.isDef(interactions));
|
||||
interactions.push(interaction);
|
||||
interaction.setMap(this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Adds the given layer to the top of this map.
|
||||
* @param {ol.layer.Base} layer Layer.
|
||||
@@ -959,6 +979,24 @@ ol.Map.prototype.removeControl = function(control) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Remove the given interaction from the map.
|
||||
* @param {ol.interaction.Interaction} interaction Interaction to remove.
|
||||
* @return {ol.interaction.Interaction|undefined} The removed interaction (or
|
||||
* undefined if the interaction was not found).
|
||||
*/
|
||||
ol.Map.prototype.removeInteraction = function(interaction) {
|
||||
var removed;
|
||||
var interactions = this.getInteractions();
|
||||
goog.asserts.assert(goog.isDef(interactions));
|
||||
if (goog.isDef(interactions.remove(interaction))) {
|
||||
interaction.setMap(null);
|
||||
removed = interaction;
|
||||
}
|
||||
return removed;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Removes the given layer from the map.
|
||||
* @param {ol.layer.Base} layer Layer.
|
||||
|
||||
Reference in New Issue
Block a user