3

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

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

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

问题在于,当用户旋转地图时,此计算的结果会发生变化,而实际缩放比例应该相同(叠加图块的大小相同,只是旋转了)。

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

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

提前致谢。

4

1 回答 1

6

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

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

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

CLLocationDirection mapAngle = camera.heading;
于 2013-10-11T15:22:21.763 回答