Use view.animate() after drag panning
This commit is contained in:
@@ -3,6 +3,7 @@ goog.provide('ol.interaction.DragPan');
|
|||||||
goog.require('ol');
|
goog.require('ol');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
goog.require('ol.coordinate');
|
goog.require('ol.coordinate');
|
||||||
|
goog.require('ol.easing');
|
||||||
goog.require('ol.events.condition');
|
goog.require('ol.events.condition');
|
||||||
goog.require('ol.functions');
|
goog.require('ol.functions');
|
||||||
goog.require('ol.interaction.Pointer');
|
goog.require('ol.interaction.Pointer');
|
||||||
@@ -33,12 +34,6 @@ ol.interaction.DragPan = function(opt_options) {
|
|||||||
*/
|
*/
|
||||||
this.kinetic_ = options.kinetic;
|
this.kinetic_ = options.kinetic;
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @type {?ol.PreRenderFunction}
|
|
||||||
*/
|
|
||||||
this.kineticPreRenderFn_ = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {ol.Pixel}
|
* @type {ol.Pixel}
|
||||||
*/
|
*/
|
||||||
@@ -105,15 +100,16 @@ ol.interaction.DragPan.handleUpEvent_ = function(mapBrowserEvent) {
|
|||||||
var distance = this.kinetic_.getDistance();
|
var distance = this.kinetic_.getDistance();
|
||||||
var angle = this.kinetic_.getAngle();
|
var angle = this.kinetic_.getAngle();
|
||||||
var center = /** @type {!ol.Coordinate} */ (view.getCenter());
|
var center = /** @type {!ol.Coordinate} */ (view.getCenter());
|
||||||
this.kineticPreRenderFn_ = this.kinetic_.pan(center);
|
|
||||||
map.beforeRender(this.kineticPreRenderFn_);
|
|
||||||
var centerpx = map.getPixelFromCoordinate(center);
|
var centerpx = map.getPixelFromCoordinate(center);
|
||||||
var dest = map.getCoordinateFromPixel([
|
var dest = map.getCoordinateFromPixel([
|
||||||
centerpx[0] - distance * Math.cos(angle),
|
centerpx[0] - distance * Math.cos(angle),
|
||||||
centerpx[1] - distance * Math.sin(angle)
|
centerpx[1] - distance * Math.sin(angle)
|
||||||
]);
|
]);
|
||||||
dest = view.constrainCenter(dest);
|
view.animate({
|
||||||
view.setCenter(dest);
|
center: view.constrainCenter(dest),
|
||||||
|
duration: 500,
|
||||||
|
easing: ol.easing.easeOut
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
// the view is not updated, force a render
|
// the view is not updated, force a render
|
||||||
map.render();
|
map.render();
|
||||||
@@ -141,11 +137,8 @@ ol.interaction.DragPan.handleDownEvent_ = function(mapBrowserEvent) {
|
|||||||
if (!this.handlingDownUpSequence) {
|
if (!this.handlingDownUpSequence) {
|
||||||
view.setHint(ol.View.Hint.INTERACTING, 1);
|
view.setHint(ol.View.Hint.INTERACTING, 1);
|
||||||
}
|
}
|
||||||
if (this.kineticPreRenderFn_ &&
|
// stop any current animation
|
||||||
map.removePreRenderFunction(this.kineticPreRenderFn_)) {
|
view.setCenter(mapBrowserEvent.frameState.viewState.center);
|
||||||
view.setCenter(mapBrowserEvent.frameState.viewState.center);
|
|
||||||
this.kineticPreRenderFn_ = null;
|
|
||||||
}
|
|
||||||
if (this.kinetic_) {
|
if (this.kinetic_) {
|
||||||
this.kinetic_.begin();
|
this.kinetic_.begin();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user