2013-10-11 38 views
3

在iOS 7中,用户可以旋转MKMapView(就像在地图应用程序中一样)。MKMapView如何知道旋转角度?

我有覆盖,并确定我是否可以显示它们,我需要计算缩放比例。在iOS 6中,我用来做:

MKZoomScale zoomScale = self.mapView.bounds.size.width/self.mapView.visibleMapRect.size.width; 

的问题是,当用户旋转地图,其中作为实际缩放比例应该是相同的(在尺寸这个计算的结果改变叠加瓷砖是相同的,它只是旋转)。

所以我的问题是这样的:如何计算真正变焦倍数时,用户旋转地图不会改变?如果我有旋转角度,我可以更正“偏差”,但是我无法在MKMapView中找到任何属性来获得此角度。

解决方法是禁用地图旋转,但我想保留此功能。

在此先感谢。

回答

5

而不是使用计算缩放比例,您可以使用新的MKMapCameraaltitude属性。它不会随着地图的旋转而改变,即使用户改变了地图的俯仰角度,我也认为它保持不变。

MKMapCamera *camera = self.mapView.camera; 
CLLocationDistance altitude = camera.altitude; 
if (altitude < 3000 && altitude > 1000) { 
    // do something 
} 

如果你还需要知道的旋转角度,你可以得到从地图相机太:

CLLocationDirection mapAngle = camera.heading; 
+3

哦,错过了这个属性!谢谢!经过测试,高度确实随着音高而变化,但是可以通过做'alt = alt/cos(mapView.camera.pitch * M_PI/180.0)来补偿' –

+0

啊,数学很好。让我知道如果使用这样的高度工作,而不是缩放。 –