旋转MKMapView时避免出现倒置标签

3

更新

这个问题在iOS 7中已被修复。公开发布后将提供更多信息。


以下是代码:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
    CGAffineTransform transform = CGAffineTransformMakeRotation(degToRad([newHeading trueHeading]));
    [mapView setTransform: transform];
}

这篇文章介绍了如何旋转地图,使其具有方向性,并展示了一些图片。但是文中的标签都是颠倒的。虽然在iOS 6发布会上,苹果宣称可以旋转标签,但作者并不知道如何实现。作者想要实现与stock Maps应用程序中类似的效果,即旋转地图但保持标签朝上。或者至少独立旋转标签而不影响地图。
1个回答

3
将变换应用于地图并不是应用用户方向旋转的正确方法。比喻来说,你是在旋转整个画布而不是画布上的元素。
你需要做的是调用: [mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES]; (例如在viewDid / WillAppear方法或某个IBAction触发方法中)
你可以在这里阅读更多信息: http://developer.apple.com/library/ios/documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html#//apple_ref/occ/instm/MKMapView/setUserTrackingMode:animated
通过调用上述方法,您告诉地图视图开始更新方向(旋转)。标签旋转将自动调整。

1
看,使用这个的唯一问题是我不想它根据用户的方向 完全 转动,而只在某些点上转动。比如底部的图片(Maps.app)是 @ 275°,我只想让我的地图旋转 270°(3*PI/2)。所以仅仅告诉地图视图跟随用户是不太够的。 - Patrick Perini
很失望这似乎是唯一可能的结果。希望苹果能够改变这种情况。无论如何还是谢谢! - Patrick Perini
@pcperini 如果你旋转一张纸质地图,标签也会随之旋转,所以不用太担心。 - AlexWien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接