如何旋转MKMapView并保持Annotation和视图不旋转?

时间:2011-08-12 06:13:16

标签: iphone annotations rotation mkmapview

我正在创建一个显示用户当前位置的MKMapView。 我想像Google Maps App一样旋转地图而不旋转注释。我使用以下代码

-(void) locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{
     mapView.transform=CGAffineTransformMakeRotation(-1*newHeading.magneticHeading*3.14159/180)};

但是整个视图像这个图像一样旋转。 The image of the problem in my app

2 个答案:

答案 0 :(得分:8)

您基本上需要对所有注释视图应用相同的变换,但具有负角度,即

for (id<MKAnnotation> annotation in mapView.annotations) 
{
    MKAnnotationView* annotationView = [mapView viewForAnnotation:annotation];
    [annotationView setTransform:CGAffineTransformMakeRotation(-angle)];
}

如果您计划添加更多注释,则应将相同的代码放在mapView:didAddAnnotationViews:中:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    for (MKAnnotationView* annotationView in views) 
    {
        [annotationView setTransform:CGAffineTransformMakeRotation(-angle)];
    }
}

答案 1 :(得分:-1)

MKMapView上显示的所有注释和标注都是MKMapView的子视图,因此如果旋转容器视图,它的所有子视图也将被旋转。