Use view.animate() to auto-pan an overlay

This commit is contained in:
Tim Schaub
2016-11-06 08:29:05 -07:00
parent a484cf0910
commit f6ad883db6
2 changed files with 14 additions and 15 deletions

View File

@@ -398,9 +398,9 @@ olx.OverlayOptions.prototype.autoPan;
/**
* The options used to create a `ol.animation.pan` animation. This animation
* is only used when `autoPan` is enabled. By default the default options for
* `ol.animation.pan` are used. If set to `null` the panning is not animated.
* The animation options used to pan the overlay into view. This animation
* is only used when `autoPan` is enabled. A `duration` and `easing` may be
* provided to customize the animation.
* @type {olx.animation.PanOptions|undefined}
* @api
*/
@@ -787,10 +787,10 @@ olx.animation.BounceOptions.prototype.easing;
/**
* @typedef {{source: ol.Coordinate,
* start: (number|undefined),
* duration: (number|undefined),
* easing: (function(number):number|undefined)}}
* @typedef {{
* duration: (number|undefined),
* easing: (function(number):number|undefined)
* }}
*/
olx.animation.PanOptions;

View File

@@ -3,7 +3,6 @@ goog.provide('ol.Overlay');
goog.require('ol');
goog.require('ol.MapEvent');
goog.require('ol.Object');
goog.require('ol.animation');
goog.require('ol.dom');
goog.require('ol.events');
goog.require('ol.extent');
@@ -71,8 +70,8 @@ ol.Overlay = function(options) {
* @private
* @type {olx.animation.PanOptions}
*/
this.autoPanAnimation_ = options.autoPanAnimation !== undefined ?
options.autoPanAnimation : /** @type {olx.animation.PanOptions} */ ({});
this.autoPanAnimation_ = options.autoPanAnimation ||
/** @type {olx.animation.PanOptions} */ ({});
/**
* @private
@@ -380,11 +379,11 @@ ol.Overlay.prototype.panIntoView_ = function() {
centerPx[1] + delta[1]
];
if (this.autoPanAnimation_) {
this.autoPanAnimation_.source = center;
map.beforeRender(ol.animation.pan(this.autoPanAnimation_));
}
map.getView().setCenter(map.getCoordinateFromPixel(newCenterPx));
map.getView().animate({
center: map.getCoordinateFromPixel(newCenterPx),
duration: this.autoPanAnimation_.duration,
easing: this.autoPanAnimation_.easing
});
}
}
};