Ios – Controlling Animation Duration in Google Maps for iOS

animationgoogle-maps-sdk-iosios

The documentation for Google Maps for iOS states that:

Call one of several methods that allow you to animate the camera moving to a new location. You can control the duration of the animation with CoreAnimation.

For the life of me, I can't figure out how to control the animation duration. I have tried using UIView animations, like:

    [UIView animateWithDuration: 5 animations:^{
         GMSCameraPosition *camera = [self newCamera];
        self.mapView.camera = camera;
    } completion:^(BOOL finished) {
    }];

And I have looked at CALayer animations in CoreAnimation. However, I don't know how you would apply a layer animation to the map view.

Can someone point me in the right direction please?

Best Answer

I found the answer ... you can control the animation duration by wrapping one of the animate* methods in a CATransaction, like this:

   [CATransaction begin];
   [CATransaction setValue:[NSNumber numberWithFloat: 1.0f] forKey:kCATransactionAnimationDuration];
   // change the camera, set the zoom, whatever.  Just make sure to call the animate* method.
   [self.mapView animateToCameraPosition: [self newCamera]];
   [CATransaction commit];
Related Topic