web-dev-qa-db-ja.com

iOS7でMKMapViewをプログラムで回転させる

現在、CGAffineTransformMakeRotationを使用してMKMapViewを操作し、正しい方向とサイズで地図を表示するアプリがあります。 iOS7のリリースにより、この方法は信頼できなくなりました(マップセンターは変化し続けます)。より信頼性の高いソリューションでこれを解決したいと思っています。

CGAffineTransformMakeRotationを使用せずにコードでマップを回転させる方法はありますか?

MKMapCameraを操作して、staic値を渡してマップを操作できることを期待しましたが、centerCoordinateとeyeCoordinateを手動で設定する方法はありません。

16
Andrin

-setCamera:animated:で新しいMKMapCameraを設定することにより、マップを回転およびピッチングできます。

回転を設定するには、新しいheadingパラメータを指定します。

- (void)viewDidAppear:(BOOL)animated // or wherever works for you
{
    [super viewDidAppear:animated];

    if ([mapView respondsToSelector:@selector(camera)]) {
        MKMapCamera *newCamera = [[mapView camera] copy];
        [newCamera setHeading:90.0]; // or newCamera.heading + 90.0 % 360.0
        [mapView setCamera:newCamera animated:YES];
    }
}

ピッチと高度を変更して、建物を表示する、より凝ったズームを行うこともできます。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if ([mapView respondsToSelector:@selector(camera)]) {
        [mapView setShowsBuildings:YES];
        MKMapCamera *newCamera = [[mapView camera] copy];
        [newCamera setPitch:45.0];
        [newCamera setHeading:90.0];
        [newCamera setAltitude:500.0];
        [mapView setCamera:newCamera animated:YES];
    }

}
31
nevan king