iphone - 如何旋转MKMapView并保持Annotation和 View 不旋转?

标签 iphone annotations rotation mkmapview

我正在制作一个显示用户当前位置的 MKMapView。 我想像 Google map 应用程序一样旋转 map ,但不旋转注释。我使用以下代码

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

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

最佳答案

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

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

关于iphone - 如何旋转MKMapView并保持Annotation和 View 不旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036246/

相关文章:

iPhone SDK : Dealloc vs. 发布了吗?

iphone - window.orientation 在 UIWebView 中不起作用

java - 我可以将注释注入(inject)到 pojo 中吗

javascript - 一段时间后淡入和淡出变得非常快 [javascript]

ios - 使 UIImageView 及其 UIImage 按比例缩放而无需额外填充

iphone - 在 iOS 中从 NSFileWrapper 播放电影

iphone - 当我确实需要使用 [NSThread sleepForTimeInterval :1];

java - 循环依赖阻止在 Tomcat 上进行 war 部署

java - Selenium WebDriver 测试后无法关闭 Firefox 窗口 (Java)

c - AVL 树平衡 - C