2016-05-14 2 views
0

Я пытаюсь получить единственное точное значение для заголовка компаса (который я затем использую с гироскопом/акселерометром для вычисления отклонения).swift - получить точный заголовок компаса (магнитный прием и точность)

Проблема: если я перестаю обновлять заголовок после первого результата, у меня осталось значение курса 0.0?

Я знаю, что некоторые службы определения местоположения должны работать некоторое время, чтобы дать точный результат, но как реализовать это для newHeading.magneticHeading?

Любые советы? (Я использую CoreLocation с CLLocation менеджером)

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

Не можете ли вы просто не называть 'stopUpdatingHeading'? – jtbandes

+0

Но когда я останавливаюUpdatingHeading? – Shane

+0

До вас. Может быть, на основе 'headingAccuracy' и/или как часто он меняется? – jtbandes

ответ

0

Я добавил, если заявление на основе headingAccuracy, как это было предложено @jtbandes.

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

поэтому я просто продолжаю получать заголовки обновлений до тех пор, пока у меня не будет полезного результата.

Смежные вопросы