Use view2DState in ol.interaction.DragRotateAndZoom

This commit is contained in:
Tom Payne
2013-06-25 17:11:33 +02:00
parent 8565201c74
commit ec4110ee54
@@ -72,15 +72,16 @@ ol.interaction.DragRotateAndZoom.prototype.handleDrag =
var magnitude = delta.magnitude(); var magnitude = delta.magnitude();
// FIXME works for View2D only // FIXME works for View2D only
var view = map.getView().getView2D(); var view = map.getView().getView2D();
var view2DState = view.getView2DState();
map.requestRenderFrame(); map.requestRenderFrame();
if (goog.isDef(this.lastAngle_)) { if (goog.isDef(this.lastAngle_)) {
var angleDelta = theta - this.lastAngle_; var angleDelta = theta - this.lastAngle_;
ol.interaction.Interaction.rotateWithoutConstraints( ol.interaction.Interaction.rotateWithoutConstraints(
map, view, view.getRotation() - angleDelta); map, view, view2DState.rotation - angleDelta);
} }
this.lastAngle_ = theta; this.lastAngle_ = theta;
if (goog.isDef(this.lastMagnitude_)) { if (goog.isDef(this.lastMagnitude_)) {
var resolution = this.lastMagnitude_ * (view.getResolution() / magnitude); var resolution = this.lastMagnitude_ * (view2DState.resolution / magnitude);
ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution); ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution);
} }
if (goog.isDef(this.lastMagnitude_)) { if (goog.isDef(this.lastMagnitude_)) {
@@ -98,11 +99,13 @@ ol.interaction.DragRotateAndZoom.prototype.handleDragEnd =
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
// FIXME works for View2D only // FIXME works for View2D only
var view = map.getView().getView2D(); var view = map.getView().getView2D();
var view2DState = view.getView2DState();
var direction = this.lastScaleDelta_ - 1; var direction = this.lastScaleDelta_ - 1;
map.withFrozenRendering(function() { map.withFrozenRendering(function() {
ol.interaction.Interaction.rotate(map, view, view.getRotation()); ol.interaction.Interaction.rotate(map, view, view2DState.rotation);
ol.interaction.Interaction.zoom(map, view, view.getResolution(), undefined, ol.interaction.Interaction.zoom(map, view, view2DState.resolution,
ol.interaction.DRAGROTATEANDZOOM_ANIMATION_DURATION, direction); undefined, ol.interaction.DRAGROTATEANDZOOM_ANIMATION_DURATION,
direction);
}); });
this.lastScaleDelta_ = 0; this.lastScaleDelta_ = 0;
return true; return true;