2013-10-11 39 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

啊,數學很好。讓我知道如果使用這樣的高度工作,而不是縮放。 –