Merge pull request #762 from elemoine/controls
Add addControl and removeControl methods to the map
This commit is contained in:
@@ -43,8 +43,8 @@
|
||||
/**
|
||||
* Object literal with config options for the map.
|
||||
* @typedef {Object} ol.MapOptions
|
||||
* @property {Array.<ol.control.Control>|undefined} controls Controls initially
|
||||
* added to the map.
|
||||
* @property {ol.Collection|Array.<ol.control.Control>|undefined} controls
|
||||
* Controls initially added to the map.
|
||||
* @property {ol.Collection|undefined} interactions Interactions.
|
||||
* @property {Array.<ol.layer.Layer>|ol.Collection|undefined} layers Layers.
|
||||
* @property {ol.RendererHint|undefined} renderer Renderer.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
goog.provide('ol.control.defaults');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('ol.Collection');
|
||||
goog.require('ol.control.Attribution');
|
||||
goog.require('ol.control.Logo');
|
||||
goog.require('ol.control.Zoom');
|
||||
@@ -9,14 +9,13 @@ goog.require('ol.control.Zoom');
|
||||
/**
|
||||
* @param {ol.control.DefaultsOptions=} opt_options Defaults options.
|
||||
* @param {Array.<ol.control.Control>=} opt_controls Additional controls.
|
||||
* @return {Array.<ol.control.Control>} Controls.
|
||||
* @return {ol.Collection} Controls.
|
||||
*/
|
||||
ol.control.defaults = function(opt_options, opt_controls) {
|
||||
|
||||
var options = goog.isDef(opt_options) ? opt_options : {};
|
||||
|
||||
/** @type {Array.<ol.control.Control>} */
|
||||
var controls = [];
|
||||
var controls = new ol.Collection();
|
||||
|
||||
var attributionControl = goog.isDef(options.attribution) ?
|
||||
options.attribution : true;
|
||||
@@ -43,7 +42,7 @@ ol.control.defaults = function(opt_options, opt_controls) {
|
||||
}
|
||||
|
||||
if (goog.isDef(opt_controls)) {
|
||||
goog.array.extend(controls, opt_controls);
|
||||
controls.extend(opt_controls);
|
||||
}
|
||||
|
||||
return controls;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
@exportClass ol.Map ol.MapOptions
|
||||
@exportProperty ol.Map.prototype.addControl
|
||||
@exportProperty ol.Map.prototype.addLayer
|
||||
@exportProperty ol.Map.prototype.addPreRenderFunction
|
||||
@exportProperty ol.Map.prototype.addPreRenderFunctions
|
||||
@@ -6,6 +7,7 @@
|
||||
@exportProperty ol.Map.prototype.getFeatures
|
||||
@exportProperty ol.Map.prototype.getInteractions
|
||||
@exportProperty ol.Map.prototype.getRenderer
|
||||
@exportProperty ol.Map.prototype.removeControl
|
||||
@exportProperty ol.Map.prototype.removeLayer
|
||||
@exportProperty ol.Map.prototype.updateSize
|
||||
|
||||
|
||||
@@ -247,6 +247,12 @@ ol.Map = function(options) {
|
||||
this.handleBrowserEvent, false, this);
|
||||
this.registerDisposable(mouseWheelHandler);
|
||||
|
||||
/**
|
||||
* @type {ol.Collection}
|
||||
* @private
|
||||
*/
|
||||
this.controls_ = optionsInternal.controls;
|
||||
|
||||
/**
|
||||
* @type {ol.Collection}
|
||||
* @private
|
||||
@@ -320,20 +326,30 @@ ol.Map = function(options) {
|
||||
// is "defined" already.
|
||||
this.setValues(optionsInternal.values);
|
||||
|
||||
if (goog.isDef(optionsInternal.controls)) {
|
||||
goog.array.forEach(optionsInternal.controls,
|
||||
/**
|
||||
* @param {ol.control.Control} control Control.
|
||||
*/
|
||||
function(control) {
|
||||
control.setMap(this);
|
||||
}, this);
|
||||
}
|
||||
this.controls_.forEach(
|
||||
/**
|
||||
* @param {ol.control.Control} control Control.
|
||||
*/
|
||||
function(control) {
|
||||
control.setMap(this);
|
||||
}, this);
|
||||
|
||||
};
|
||||
goog.inherits(ol.Map, ol.Object);
|
||||
|
||||
|
||||
/**
|
||||
* Add the given control to the map.
|
||||
* @param {ol.control.Control} control Control.
|
||||
*/
|
||||
ol.Map.prototype.addControl = function(control) {
|
||||
var controls = this.getControls();
|
||||
goog.asserts.assert(goog.isDef(controls));
|
||||
controls.push(control);
|
||||
control.setMap(this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Adds the given layer to the top of this map.
|
||||
* @param {ol.layer.Layer} layer Layer.
|
||||
@@ -434,6 +450,14 @@ ol.Map.prototype.getCoordinateFromPixel = function(pixel) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.Collection} Controls.
|
||||
*/
|
||||
ol.Map.prototype.getControls = function() {
|
||||
return this.controls_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get feature information for a pixel on the map.
|
||||
*
|
||||
@@ -797,6 +821,23 @@ ol.Map.prototype.requestRenderFrame = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Remove the given control from the map.
|
||||
* @param {ol.control.Control} control Control.
|
||||
* @return {ol.control.Control|undefined} The removed control of undefined
|
||||
* if the control was not found.
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Removes the given layer from the map.
|
||||
* @param {ol.layer.Layer} layer Layer.
|
||||
@@ -997,7 +1038,7 @@ ol.Map.prototype.withFrozenRendering = function(f, opt_obj) {
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{controls: Array.<ol.control.Control>,
|
||||
* @typedef {{controls: ol.Collection,
|
||||
* interactions: ol.Collection,
|
||||
* rendererConstructor:
|
||||
* function(new: ol.renderer.Map, Element, ol.Map),
|
||||
@@ -1074,8 +1115,17 @@ ol.Map.createOptionsInternal = function(options) {
|
||||
}
|
||||
}
|
||||
|
||||
var controls = goog.isDef(options.controls) ?
|
||||
options.controls : ol.control.defaults();
|
||||
var controls;
|
||||
if (goog.isDef(options.controls)) {
|
||||
if (goog.isArray(options.controls)) {
|
||||
controls = new ol.Collection(goog.array.clone(options.controls));
|
||||
} else {
|
||||
goog.asserts.assertInstanceof(options.controls, ol.Collection);
|
||||
controls = options.controls;
|
||||
}
|
||||
} else {
|
||||
controls = ol.control.defaults();
|
||||
}
|
||||
|
||||
var interactions = goog.isDef(options.interactions) ?
|
||||
options.interactions : ol.interaction.defaults();
|
||||
|
||||
Reference in New Issue
Block a user