Google Mapsのズームをアニメーションで。
単純にズームしたいだけなら、GMSMapView setCameraUpdateなどを使用する。
GMSCameraUpdate* update = [GMSCameraUpdate zoomBy:17.0f];
[self.map moveCamera:update];
ただ、これだとズームが即座に行われてなんかカッコよくない。 アニメーションしながらズームさせたい場合はGMSMapViewのanimateToZoomとかを使う。
[self.map animateToZoom:17.0f];
さらに、ここから「アニメーションでズームした直後にほげほげしたい」という場合は単純に
[self.map animateToZoom:17.0f];
[self ほげほげ];
などと書ければよいが、実際にはズームのアニメーション完了を待たずにほげほげが実行される。
アニメーションの完了を待つようなGoogle MapsのAPIは用意されていないが、Core Animationと組み合わせれば実現できる。コードが若干長くなるのがいまいち。なんかいい方法ないかな。
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat: 1.0f] forKey:kCATransactionAnimationDuration];
[CATransaction setCompletionBlock:^{
[self ほげほげ];
}];
[self.map animateToZoom:17.0f];
[CATransaction commit];