17

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

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

我查看了 MKMapCamera,希望可以将其操纵为传递静态值以操纵地图,但无法手动设置 centerCoordinate 和 eyeCoordinate。

4

1 回答 1

32

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

}
于 2013-09-23T14:26:48.783 回答