1

要清楚我的問題是沒有讀取右側或左側風景中的標題值。它工作正常我使用位置管理器並減去90°來讀取橫向右側的標題值和左側橫向270°的標題值,默認情況下該設備始終被認爲是縱向模式,這就是爲什麼我們必須進行此調整。iPhone:偏移右側和左側風景之間的指南針標題值左側

我最近開發了一個基於位置的增強現實應用程序,我遇到的情況是,左右景觀之間始終存在偏移量。我在「現場」進行了測試,偏移量約爲12°。我希望這個應用程序儘可能準確,我的意思是,因爲我們依賴傳感器數據,這是第一個版本,小於10°是可以接受的(甚至在最壞的情況下是15°)。但如果我們增加現有的錯誤12°的偏移量,這是相當煩人的。

沒有人有這個解釋?即使我現在無法修復它,我也想擁有一個。所以現在我試圖通過向左側增加12°來「解決」這個問題,或者我應該減去12°來右移右側,我不知道!

在這個問題上的任何經驗?

回答

7

我的經驗是指南針不是很好,尤其是在風景中。我不會在一個視圖中減去12°,因爲這個差異可能是其他設備上的其他內容。我建議您在繼續之前測試其他一兩臺iPhone。

另外,你是否設置LocationManager的視圖?

CLLocationManager *compassManager; 
compassManager.headingOrientation =CLDeviceOrientationLandscapeLeft; 
+0

謝謝你的提示,不勝感激! 事實上,我沒有設置這個屬性,所以現在使用它來阻止我通過減去90°或270°來實現這個技巧,現在代碼更清晰了。 好吧,我不得不承認我不能做更多關於指南針的準確性,並且避免在其他設備上增加12°會更明智一些。這個應用程序發佈之後,我計劃開發一個使用Core Motion的版本2.0作爲標題,並利用Apple提供的示例項目pARk。它不能更糟:) –

+1

+1爲compassManager.headingOrientation = CLDeviceOrientationLandscapeLeft; - 幫我搞定 – malaki1974

+0

iPhone在肖像和風景中間時的調整情況如何? –

1

我也碰到過這個問題,並且LandscapeLeft,landscapeRight和Portrait之間有區別。感謝Sten的回覆和下面的Swift代碼解決了這個問題。

override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) { 
    var text="" 
    switch UIDevice.currentDevice().orientation{ 
    case .Portrait: 
     text="Portrait" 
     locationManager.headingOrientation = CLDeviceOrientation.Portrait 
    case .PortraitUpsideDown: 
     text="PortraitUpsideDown" 
     locationManager.headingOrientation = CLDeviceOrientation.Portrait 
    case .LandscapeLeft: 
     text="LandscapeLeft" 
     locationManager.headingOrientation = CLDeviceOrientation.LandscapeLeft 
    case .LandscapeRight: 
     text="LandscapeRight" 
     locationManager.headingOrientation = CLDeviceOrientation.LandscapeRight 
    default: 
     text="Another" 
    } 
    NSLog("You have moved: \(text)") 
}