Fix use of ol.IView2D in ol.interaction.TouchPan

This commit is contained in:
Tom Payne
2013-12-13 15:16:02 +01:00
parent 49369b8800
commit 8f6952c56c

View File

@@ -64,15 +64,15 @@ ol.interaction.TouchPan.prototype.handleTouchMove = function(mapBrowserEvent) {
var deltaX = this.lastCentroid[0] - centroid[0]; var deltaX = this.lastCentroid[0] - centroid[0];
var deltaY = centroid[1] - this.lastCentroid[1]; var deltaY = centroid[1] - this.lastCentroid[1];
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
var view = map.getView().getView2D(); var view2D = map.getView().getView2D();
var view2DState = view.getView2DState(); var view2DState = view2D.getView2DState();
var center = [deltaX, deltaY]; var center = [deltaX, deltaY];
ol.coordinate.scale(center, view2DState.resolution); ol.coordinate.scale(center, view2DState.resolution);
ol.coordinate.rotate(center, view2DState.rotation); ol.coordinate.rotate(center, view2DState.rotation);
ol.coordinate.add(center, view2DState.center); ol.coordinate.add(center, view2DState.center);
center = view.constrainCenter(center); center = view2D.constrainCenter(center);
map.requestRenderFrame(); map.requestRenderFrame();
view.setCenter(center); view2D.setCenter(center);
} }
this.lastCentroid = centroid; this.lastCentroid = centroid;
}; };
@@ -84,12 +84,13 @@ ol.interaction.TouchPan.prototype.handleTouchMove = function(mapBrowserEvent) {
ol.interaction.TouchPan.prototype.handleTouchEnd = ol.interaction.TouchPan.prototype.handleTouchEnd =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
var view = map.getView(); var view2D = map.getView().getView2D();
if (this.targetTouches.length === 0) { if (this.targetTouches.length === 0) {
if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) { if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {
var distance = this.kinetic_.getDistance(); var distance = this.kinetic_.getDistance();
var angle = this.kinetic_.getAngle(); var angle = this.kinetic_.getAngle();
var center = view.getCenter(); var center = view2D.getCenter();
goog.asserts.assert(goog.isDef(center));
this.kineticPreRenderFn_ = this.kinetic_.pan(center); this.kineticPreRenderFn_ = this.kinetic_.pan(center);
map.beforeRender(this.kineticPreRenderFn_); map.beforeRender(this.kineticPreRenderFn_);
var centerpx = map.getPixelFromCoordinate(center); var centerpx = map.getPixelFromCoordinate(center);
@@ -97,8 +98,8 @@ ol.interaction.TouchPan.prototype.handleTouchEnd =
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); dest = view2D.constrainCenter(dest);
view.setCenter(dest); view2D.setCenter(dest);
} }
map.requestRenderFrame(); map.requestRenderFrame();
return false; return false;
@@ -116,12 +117,12 @@ ol.interaction.TouchPan.prototype.handleTouchStart =
function(mapBrowserEvent) { function(mapBrowserEvent) {
if (this.targetTouches.length > 0) { if (this.targetTouches.length > 0) {
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
var view = map.getView(); var view2D = map.getView().getView2D();
this.lastCentroid = null; this.lastCentroid = null;
map.requestRenderFrame(); map.requestRenderFrame();
if (!goog.isNull(this.kineticPreRenderFn_) && if (!goog.isNull(this.kineticPreRenderFn_) &&
map.removePreRenderFunction(this.kineticPreRenderFn_)) { map.removePreRenderFunction(this.kineticPreRenderFn_)) {
view.setCenter(mapBrowserEvent.frameState.view2DState.center); view2D.setCenter(mapBrowserEvent.frameState.view2DState.center);
this.kineticPreRenderFn_ = null; this.kineticPreRenderFn_ = null;
} }
if (this.kinetic_) { if (this.kinetic_) {