From f4edf7a33ecaf0e9cdb7133ab9bfe053ac2b78d9 Mon Sep 17 00:00:00 2001 From: "Justin R. Miller" Date: Fri, 7 Feb 2014 12:37:48 -0500 Subject: [PATCH] fixes #35: decelerated pinch zooming --- ios/MBXViewController.mm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ios/MBXViewController.mm b/ios/MBXViewController.mm index 53afcb6c9..5fe941fb9 100644 --- a/ios/MBXViewController.mm +++ b/ios/MBXViewController.mm @@ -212,6 +212,20 @@ class MBXMapView mapView->map.scaleBy(powf(2, newZoom) / mapView->map.getScale(), [pinch locationInView:pinch.view].x, [pinch locationInView:pinch.view].y); } + else if (pinch.state == UIGestureRecognizerStateEnded) + { + if (fabsf(pinch.velocity) < 20) + return; + + CGFloat finalZoom = log2f(mapView->map.getScale()) + (0.01 * pinch.velocity); + + double scale = mapView->map.getScale(); + double new_scale = powf(2, finalZoom); + + CGFloat duration = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad ? 0.5 : 0.5); + + mapView->map.scaleBy(new_scale / scale, [pinch locationInView:pinch.view].x, [pinch locationInView:pinch.view].y, duration); + } [self startRender]; }