我有一个应用程序,当前使用CGAffineTransformMakeRotation来操作MKMapView,以便显示具有正确方向和大小的地图。随着iOS7的发布,这种方法变得不可靠(地图中心不断变换)。我希望通过更可靠的解决方案解决这个问题。
有没有办法在不使用CGAffineTransformMakeRotation的情况下在代码中旋转地图?
我看了MKMapCamera希望我可以操纵它来传递staic值来操纵地图但是没有办法手动设置centerCoordinate和eyeCoordinate。
答案 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];
}
}