Navigation control with Drag sequence Dragger

This is totally unfinished, but tests pass, and it is only meant to give the map a Navigation control.
This commit is contained in:
ahocevar
2012-06-21 14:08:30 +02:00
parent 8fc1e9cc98
commit 6213e07f96
9 changed files with 198 additions and 97 deletions
+57
View File
@@ -0,0 +1,57 @@
goog.provide('ol.event.Drag');
goog.require('ol.event.Sequence');
goog.require('goog.fx.Dragger');
goog.require('goog.fx.Dragger.EventType');
/**
* @constructor
* @extends {ol.event.Sequence}
* @export
*/
ol.event.Drag = function() {
goog.base(this);
/** @inheritDoc */
this.eventType_ = {
DRAGSTART: 'dragstart',
DRAG: 'drag',
DRAGEND: 'dragend'
};
var providedEvents = this.getProvidedEvents(),
oldX, oldY;
providedEvents[this.eventType_.DRAGSTART] = {};
providedEvents[this.eventType_.DRAGSTART]
[goog.fx.Dragger.EventType.START] = function(evt) {
oldX = evt.screenX;
oldY = evt.screenY;
};
providedEvents[this.eventType_.DRAG] = {};
providedEvents[this.eventType_.DRAG]
[goog.fx.Dragger.EventType.DRAG] = function(evt) {
evt.dx = evt.screenX - oldX;
evt.dy = evt.screenY - oldY;
oldX = evt.screenX;
oldY = evt.screenY;
};
providedEvents[this.eventType_.DRAGEND] = {};
providedEvents[this.eventType_.DRAGEND]
[goog.fx.Dragger.EventType.END] = true;
};
goog.inherits(ol.event.Drag, ol.event.Sequence);
/** @inheritDoc */
ol.event.Drag.prototype.setElement = function(element) {
goog.base(this, 'setElement', element);
if (goog.isDefAndNotNull(element)) {
this.dragger_ = new goog.fx.Dragger(element);
} else if (this.dragger_) {
this.dragger_.dispose();
}
};