MKMapView如何知道旋转角度?

Loï*_*iol 3 cocoa-touch mkmapview ios ios7

在iOS 7中,用户可以旋转MKMapView(就像在地图应用程序中一样).

我有叠加并确定是否可以显示它们,我需要计算缩放比例.在iOS 6中,我曾经做过:

MKZoomScale zoomScale = self.mapView.bounds.size.width / self.mapView.visibleMapRect.size.width; 
Run Code Online (Sandbox Code Playgroud)

问题是当用户旋转地图时,此计算的结果会发生变化,其中实际缩放比例应相同(叠加切片的大小相同,只是旋转).

所以我的问题如下:如何计算用户旋转地图时不会改变的真实缩放比例?如果我有旋转角度,我可以纠正"偏见"但我找不到MKMapView中的任何属性来获得这个角度.

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

提前致谢.

nev*_*ing 5

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

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

如果你仍然需要知道旋转角度,你也可以从地图相机中获得:

CLLocationDirection mapAngle = camera.heading;
Run Code Online (Sandbox Code Playgroud)

  • 哦,错过了这个属性!谢谢!经过测试,高度确实会随着音高而变化,但可以通过`alt = alt/cos(mapView.camera.pitch*M_PI/180.0)进行补偿. (3认同)