2016-05-14 38 views
0

我想要獲得一個精確的羅盤航向值(然後使用陀螺儀/加速計來計算偏差)。swift - 獲取準確的羅盤航向(magneticHeading和準確性)

問題是,如果我在第一個結果之後停止更新標題,那麼剩餘標題值爲0.0?

我知道一些位置服務需要運行一段時間才能給出準確的結果,但是如何實現這個newHeading.magneticHeading?

任何提示? (我正在使用CoreLocation和CLLocation Manager)

func locationManager(manager: CLLocationManager, 
    didUpdateHeading newHeading: CLHeading) { 
     referenceHeading = newHeading.magneticHeading 
     print("New reference heading = \(newHeading.magneticHeading)") 
     gotReferenceHeading = true 
     locationManager.stopUpdatingHeading() 
} 
+0

難道你不能調用'stopUpdatingHeading'? – jtbandes

+0

但是我什麼時候停止更新頭部? – Shane

+0

由你決定。也許是基於'headingAccuracy'和/或它變化的頻率? – jtbandes

回答

0

我按照@jtbandes的建議添加了基於headingAccuracy的if語句。

if newHeading.headingAccuracy > 0 { 
    referenceHeading = newHeading.magneticHeading 
    gotReferenceHeading = true 
    locationManager.stopUpdatingHeading() 
} 

所以我只是不斷收到標題更新,直到我有一個有用的結果。