/**
* @classdesc
* This control let you zoom in - out using the mouse scroll.<br/>
* This control is not avaliable in the mobile version.
*
* @constructor
* @param {cercaliax.Control.ZoomSliderOptions|undefined} options ZoomSlider options
* @extends {ol.control.Control}
*/
cercalia.Control.ZoomSlider = function(options){
/**
* @private
* @type {string}
*/
this.name_ = cercalia.MapControls.ZoomSlider;
ol.control.ZoomSlider.call(this, options);
/**
* Class name
* @private
* @type {string}
*/
this.CLASS_NAME_ = "cercalia.Control.ZoomSlider";
/**
* @private
* @type {string}
*/
this.element_ = null;
/**
* @private
* @type {number}
*/
this.top_ = options.top ? options.top : 0;
/**
* @private
* @type {string}
*/
this.position_ = options.position ? options.position : 'left';
var self = this;
var doZoomIn = function(e) {
var view = self.getMap().getView();
var currentResolution = view.getResolution();
self.getMap().beforeRender(ol.animation.zoom({
resolution: currentResolution,
duration: 250,
easing: ol.easing.easeOut
}));
var newResolution = view.constrainResolution(currentResolution, 1);
view.setResolution(newResolution);
e.stopPropagation();
e.preventDefault();
};
var doZoomOut = function(e) {
var view = self.getMap().getView();
var currentResolution = view.getResolution();
self.getMap().beforeRender(ol.animation.zoom({
resolution: currentResolution,
duration: 250,
easing: ol.easing.easeOut
}));
var newResolution = view.constrainResolution(currentResolution, -1);
view.setResolution(newResolution);
e.stopPropagation();
e.preventDefault();
};
// Modificamos los estilos
var zoomIn = cercalia.jQuery("<button />").addClass("cercalia-zoomslider-zoom-in ui-no-corner-bottom").button({ icons: { primary: "ui-icon-plusthick" }, text: false });
var zoomOut = cercalia.jQuery("<button />").addClass("cercalia-zoomslider-zoom-out ui-no-corner-top").button({ icons: { primary: "ui-icon-minus" }, text: false });
zoomIn.on('click', doZoomIn);
zoomIn.on('touchstart', doZoomIn);
zoomOut.on('click', doZoomOut);
zoomOut.on('touchstart', doZoomOut);
var slider = cercalia.jQuery(this.element).css("top", this.top_ + "px");
//TODO: llargada del zoom slider segons el nombre de zoom.
slider.height(200);
slider.find(".ol-zoomslider-thumb").addClass("ui-state-default");
zoomIn.css("top", (-30) + "px");
//zoomOut.css("top", (slider.height() - 30 ) + "px");
zoomOut.css("bottom", (-30) + "px");
this.element_ = slider.addClass("cercalia-zoomslider").append(zoomIn).append(zoomOut).get(0);
this.setPosition(this.position_);
};
ol.inherits(cercalia.Control.ZoomSlider, ol.control.ZoomSlider);
/**
* Change the ZoomSlider control position.
* @param {string} position ZoomSlider position, 'left' or 'right'.
*/
cercalia.Control.ZoomSlider.prototype.setPosition = function(position){
this.position_ = position;
if(this.position_ == 'left'){
cercalia.jQuery(this.element_).css({
left: '28px',
right : '',
top: this.top_ + "px"
});
} else {
cercalia.jQuery(this.element_).css({
right: '22px',
left : '',
top: (this.top_ + 35) + "px"
});
}
};