Fit accepts either a geometry or an extent. This combines two previously distinct functions into one more flexible call. Also brings the rotations support and options previously available to fitGeometry to extents
82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
goog.provide('ol.control.ZoomToExtent');
|
|
|
|
goog.require('goog.asserts');
|
|
goog.require('goog.dom');
|
|
goog.require('goog.dom.TagName');
|
|
goog.require('goog.events');
|
|
goog.require('goog.events.EventType');
|
|
goog.require('ol.control.Control');
|
|
goog.require('ol.css');
|
|
|
|
|
|
|
|
/**
|
|
* @classdesc
|
|
* A button control which, when pressed, changes the map view to a specific
|
|
* extent. To style this control use the css selector `.ol-zoom-extent`.
|
|
*
|
|
* @constructor
|
|
* @extends {ol.control.Control}
|
|
* @param {olx.control.ZoomToExtentOptions=} opt_options Options.
|
|
* @api stable
|
|
*/
|
|
ol.control.ZoomToExtent = function(opt_options) {
|
|
var options = goog.isDef(opt_options) ? opt_options : {};
|
|
|
|
/**
|
|
* @type {ol.Extent}
|
|
* @private
|
|
*/
|
|
this.extent_ = goog.isDef(options.extent) ? options.extent : null;
|
|
|
|
var className = goog.isDef(options.className) ? options.className :
|
|
'ol-zoom-extent';
|
|
|
|
var label = goog.isDef(options.label) ? options.label : 'E';
|
|
var tipLabel = goog.isDef(options.tipLabel) ?
|
|
options.tipLabel : 'Fit to extent';
|
|
var button = goog.dom.createDom(goog.dom.TagName.BUTTON, {
|
|
'type': 'button',
|
|
'title': tipLabel
|
|
}, label);
|
|
|
|
goog.events.listen(button, goog.events.EventType.CLICK,
|
|
this.handleClick_, false, this);
|
|
|
|
ol.control.Control.bindMouseOutFocusOutBlur(button);
|
|
|
|
var cssClasses = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' +
|
|
ol.css.CLASS_CONTROL;
|
|
var element = goog.dom.createDom(goog.dom.TagName.DIV, cssClasses, button);
|
|
|
|
goog.base(this, {
|
|
element: element,
|
|
target: options.target
|
|
});
|
|
};
|
|
goog.inherits(ol.control.ZoomToExtent, ol.control.Control);
|
|
|
|
|
|
/**
|
|
* @param {goog.events.BrowserEvent} event The event to handle
|
|
* @private
|
|
*/
|
|
ol.control.ZoomToExtent.prototype.handleClick_ = function(event) {
|
|
event.preventDefault();
|
|
this.handleZoomToExtent_();
|
|
};
|
|
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function() {
|
|
var map = this.getMap();
|
|
var view = map.getView();
|
|
var extent = goog.isNull(this.extent_) ?
|
|
view.getProjection().getExtent() : this.extent_;
|
|
var size = map.getSize();
|
|
goog.asserts.assert(goog.isDef(size), 'size should be defined');
|
|
view.fit(extent, size);
|
|
};
|