在iOS7中以编程方式旋转MKMapView

我有一个应用程序,目前使用CGAffineTransformMakeRotation来操纵MKMapView为了显示正确的方向和大小的地图。 随着iOS7的发布,这种方法变得不可靠(地图中心在不停地移动)。 我希望用更可靠的解决scheme来解决这个问题。

有没有办法在不使用CGAffineTransformMakeRotation代码中旋转地图?

我看了一下MKMapCamera,希望能够把它变成传递阶段值来操作地图,但是没有办法手动设置中心坐标和眼坐标。

您可以使用-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]; } } 

您还可以在俯仰和高度变化的情况下进行更加高级的缩放,以显示build筑物:

 - (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]; } }