Merge pull request #6644 from tschaub/view-setters
Allow minZoom and maxZoom to be set on a view
This commit is contained in:
@@ -16,6 +16,7 @@ goog.require('ol.extent');
|
||||
goog.require('ol.geom.GeometryType');
|
||||
goog.require('ol.geom.Polygon');
|
||||
goog.require('ol.geom.SimpleGeometry');
|
||||
goog.require('ol.obj');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.proj.Units');
|
||||
|
||||
@@ -79,7 +80,8 @@ goog.require('ol.proj.Units');
|
||||
*/
|
||||
ol.View = function(opt_options) {
|
||||
ol.Object.call(this);
|
||||
var options = opt_options || {};
|
||||
|
||||
var options = ol.obj.assign({}, opt_options);
|
||||
|
||||
/**
|
||||
* @private
|
||||
@@ -101,13 +103,6 @@ ol.View = function(opt_options) {
|
||||
|
||||
this.updateAnimations_ = this.updateAnimations_.bind(this);
|
||||
|
||||
/**
|
||||
* @type {Object.<string, *>}
|
||||
*/
|
||||
var properties = {};
|
||||
properties[ol.ViewProperty.CENTER] = options.center !== undefined ?
|
||||
options.center : null;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @const
|
||||
@@ -115,6 +110,24 @@ ol.View = function(opt_options) {
|
||||
*/
|
||||
this.projection_ = ol.proj.createProjection(options.projection, 'EPSG:3857');
|
||||
|
||||
this.applyOptions_(options);
|
||||
};
|
||||
ol.inherits(ol.View, ol.Object);
|
||||
|
||||
|
||||
/**
|
||||
* Set up the view with the given options.
|
||||
* @param {olx.ViewOptions} options View options.
|
||||
*/
|
||||
ol.View.prototype.applyOptions_ = function(options) {
|
||||
|
||||
/**
|
||||
* @type {Object.<string, *>}
|
||||
*/
|
||||
var properties = {};
|
||||
properties[ol.ViewProperty.CENTER] = options.center !== undefined ?
|
||||
options.center : null;
|
||||
|
||||
var resolutionConstraintInfo = ol.View.createResolutionConstraint_(
|
||||
options);
|
||||
|
||||
@@ -168,8 +181,41 @@ ol.View = function(opt_options) {
|
||||
properties[ol.ViewProperty.ROTATION] =
|
||||
options.rotation !== undefined ? options.rotation : 0;
|
||||
this.setProperties(properties);
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {olx.ViewOptions}
|
||||
*/
|
||||
this.options_ = options;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Get an updated version of the view options used to construct the view. The
|
||||
* current resolution (or zoom), center, and rotation are applied to any stored
|
||||
* options. The provided options can be uesd to apply new min/max zoom or
|
||||
* resolution limits.
|
||||
* @param {olx.ViewOptions} newOptions New options to be applied.
|
||||
* @return {olx.ViewOptions} New options updated with the current view state.
|
||||
*/
|
||||
ol.View.prototype.getUpdatedOptions_ = function(newOptions) {
|
||||
var options = ol.obj.assign({}, this.options_);
|
||||
|
||||
// preserve resolution (or zoom)
|
||||
if (options.resolution !== undefined) {
|
||||
options.resolution = this.getResolution();
|
||||
} else {
|
||||
options.zoom = this.getZoom();
|
||||
}
|
||||
|
||||
// preserve center
|
||||
options.center = this.getCenter();
|
||||
|
||||
// preserve rotation
|
||||
options.rotation = this.getRotation();
|
||||
|
||||
return ol.obj.assign({}, options, newOptions);
|
||||
};
|
||||
ol.inherits(ol.View, ol.Object);
|
||||
|
||||
|
||||
/**
|
||||
@@ -540,6 +586,16 @@ ol.View.prototype.getMaxZoom = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set a new maximum zoom level for the view.
|
||||
* @param {number} zoom The maximum zoom level.
|
||||
* @api
|
||||
*/
|
||||
ol.View.prototype.setMaxZoom = function(zoom) {
|
||||
this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the minimum zoom level for the view.
|
||||
* @return {number} The minimum zoom level.
|
||||
@@ -550,6 +606,16 @@ ol.View.prototype.getMinZoom = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set a new minimum zoom level for the view.
|
||||
* @param {number} zoom The minimum zoom level.
|
||||
* @api
|
||||
*/
|
||||
ol.View.prototype.setMinZoom = function(zoom) {
|
||||
this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the view projection.
|
||||
* @return {ol.proj.Projection} The projection of the view.
|
||||
|
||||
Reference in New Issue
Block a user