現在、CGAffineTransformMakeRotationを使用してMKMapViewを操作し、正しい方向とサイズで地図を表示するアプリがあります。 iOS7のリリースにより、この方法は信頼できなくなりました(マップセンターは変化し続けます)。より信頼性の高いソリューションでこれを解決したいと思っています。
CGAffineTransformMakeRotationを使用せずにコードでマップを回転させる方法はありますか?
MKMapCameraを操作して、staic値を渡してマップを操作できることを期待しましたが、centerCoordinateとeyeCoordinateを手動で設定する方法はありません。
-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];
}
}