以编程方式在iOS7中旋转MKMapView

时间:2013-09-21 19:42:39

标签: ios mkmapview ios7

我有一个应用程序,当前使用CGAffineTransformMakeRotation来操作MKMapView,以便显示具有正确方向和大小的地图。随着iOS7的发布,这种方法变得不可靠(地图中心不断变换)。我希望通过更可靠的解决方案解决这个问题。

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

我看了MKMapCamera希望我可以操纵它来传递staic值来操纵地图但是没有办法手动设置centerCoordinate和eyeCoordinate。

1 个答案:

答案 0 :(得分:28)

您可以使用MKMapCamera设置新的-setCamera:animated:来旋转和调整地图。

要设置旋转,请为其指定一个新的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];
    }

}