diff --git a/src/ol/control/zoomslidercontrol.js b/src/ol/control/zoomslidercontrol.js
index 605131b875..e4a968c3c4 100644
--- a/src/ol/control/zoomslidercontrol.js
+++ b/src/ol/control/zoomslidercontrol.js
@@ -4,7 +4,6 @@ goog.provide('ol.control.ZoomSlider');
goog.require('goog.asserts');
goog.require('goog.dom');
-goog.require('goog.math.Rect');
goog.require('goog.style');
goog.require('ol.events');
goog.require('ol.events.Event');
@@ -55,25 +54,37 @@ ol.control.ZoomSlider = function(opt_options) {
/**
* @type {boolean}
+ * @private
*/
this.dragging_;
+
/**
* @type {Array.
}
+ * @private
*/
this.dragListenerKeys_;
/**
- * @type {goog.math.Rect}
+ * @type {number}
+ * @private
*/
- this.limits_;
+ this.heightLimit_ = 0;
+
+ /**
+ * @type {number}
+ * @private
+ */
+ this.widthLimit_ = 0;
/**
* @type {number|undefined}
+ * @private
*/
this.previousX_;
/**
* @type {number|undefined}
+ * @private
*/
this.previousY_;
@@ -93,8 +104,8 @@ ol.control.ZoomSlider = function(opt_options) {
this.sliderInitialized_ = false;
/**
- * @private
* @type {number}
+ * @private
*/
this.duration_ = options.duration !== undefined ? options.duration : 200;
@@ -174,18 +185,13 @@ ol.control.ZoomSlider.prototype.initSlider_ = function() {
thumbMargins.top + thumbMargins.bottom;
this.thumbSize_ = [thumbWidth, thumbHeight];
- var width = containerSize.width - thumbWidth;
- var height = containerSize.height - thumbHeight;
-
- var limits;
if (containerSize.width > containerSize.height) {
this.direction_ = ol.control.ZoomSlider.direction.HORIZONTAL;
- limits = new goog.math.Rect(0, 0, width, 0);
+ this.widthLimit_ = containerSize.width - thumbWidth;
} else {
this.direction_ = ol.control.ZoomSlider.direction.VERTICAL;
- limits = new goog.math.Rect(0, 0, 0, height);
+ this.heightLimit_ = containerSize.height - thumbHeight;
}
- this.limits_ = limits;
this.sliderInitialized_ = true;
};
@@ -325,10 +331,9 @@ ol.control.ZoomSlider.prototype.setThumbPosition_ = function(res) {
var thumb = goog.dom.getFirstElementChild(this.element);
if (this.direction_ == ol.control.ZoomSlider.direction.HORIZONTAL) {
- thumb.style.left = this.limits_.left + this.limits_.width * position + 'px';
+ thumb.style.left = this.widthLimit_ * position + 'px';
} else {
- thumb.style.left = this.limits_.left + 'px';
- thumb.style.top = this.limits_.top + this.limits_.height * position + 'px';
+ thumb.style.top = this.heightLimit_ * position + 'px';
}
};
@@ -344,12 +349,11 @@ ol.control.ZoomSlider.prototype.setThumbPosition_ = function(res) {
* @private
*/
ol.control.ZoomSlider.prototype.getRelativePosition_ = function(x, y) {
- var draggerLimits = this.limits_;
var amount;
if (this.direction_ === ol.control.ZoomSlider.direction.HORIZONTAL) {
- amount = (x - draggerLimits.left) / draggerLimits.width;
+ amount = x / this.widthLimit_;
} else {
- amount = (y - draggerLimits.top) / draggerLimits.height;
+ amount = y / this.heightLimit_;
}
return ol.math.clamp(amount, 0, 1);
};
diff --git a/test/spec/ol/control/zoomslidercontrol.test.js b/test/spec/ol/control/zoomslidercontrol.test.js
index fc71799507..9fe30399c3 100644
--- a/test/spec/ol/control/zoomslidercontrol.test.js
+++ b/test/spec/ol/control/zoomslidercontrol.test.js
@@ -52,7 +52,8 @@ describe('ol.control.ZoomSlider', function() {
describe('#initSlider_', function() {
it('sets limits', function() {
zoomslider.initSlider_();
- expect(zoomslider.limits_ instanceof goog.math.Rect).to.be(true);
+ expect(zoomslider.widthLimit_).not.to.be(0);
+ expect(zoomslider.heightLimit_).to.be(0);
});
});
@@ -115,19 +116,19 @@ describe('ol.control.ZoomSlider', function() {
var event = new ol.pointer.PointerEvent(ol.pointer.EventType.POINTERDOWN, {
target: control.element.firstElementChild
});
- event.clientX = control.limits_.width;
+ event.clientX = control.widthLimit_;
event.clientY = 0;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(16);
expect(control.dragging_).to.be(true);
expect(control.dragListenerKeys_).to.be.ok();
event.type = ol.pointer.EventType.POINTERMOVE;
- event.clientX = 6 * control.limits_.width / 8;
+ event.clientX = 6 * control.widthLimit_ / 8;
event.clientY = 0;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(4);
event.type = ol.pointer.EventType.POINTERMOVE;
- event.clientX = 4 * control.limits_.width / 8;
+ event.clientX = 4 * control.widthLimit_ / 8;
event.clientY = 0;
dragger.dispatchEvent(event);
event.type = ol.pointer.EventType.POINTERUP;
@@ -159,12 +160,12 @@ describe('ol.control.ZoomSlider', function() {
expect(control.dragListenerKeys_).to.be.ok();
event.type = ol.pointer.EventType.POINTERMOVE;
event.clientX = 0;
- event.clientY = 2 * control.limits_.height / 8;
+ event.clientY = 2 * control.heightLimit_ / 8;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(0.25);
event.type = ol.pointer.EventType.POINTERMOVE;
event.clientX = 0;
- event.clientY = 4 * control.limits_.height / 8;
+ event.clientY = 4 * control.heightLimit_ / 8;
dragger.dispatchEvent(event);
event.type = ol.pointer.EventType.POINTERUP;
dragger.dispatchEvent(event);
@@ -179,7 +180,6 @@ describe('ol.control.ZoomSlider', function() {
goog.require('goog.Disposable');
goog.require('goog.dispose');
goog.require('goog.dom.classlist');
-goog.require('goog.math.Rect');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.control.ZoomSlider');