2016-05-14 5 views
0

Ich versuche, einen einzigen genauen Wert für eine Kompassrichtung zu bekommen (die ich dann mit dem Gyro/Beschleunigungsmesser zur Berechnung der Abweichung verwenden).swift - erhalten genaue Kompassrichtung (magneticHeading und Genauigkeit)

Problem ist, wenn ich die Überschrift nach dem ersten Ergebnis zu aktualisieren, bin ich mit einem Überschriftswert von 0,0?

Ich weiß, einige Standortdienste müssen für eine Weile laufen, um ein genaues Ergebnis zu geben, aber wie wird dies für newHeading.magneticHeading implementiert?

Irgendwelche Tipps? (Ich bin mit Corelocation mit CLLocation-Manager)

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

Kannst du nicht 'stopUpdatingHeading' nennen? – jtbandes

+0

Aber wann stoppe ichUpdatingHeading? – Shane

+0

Bis zu Ihnen. Vielleicht basierend auf der "headingAccuracy" und/oder wie oft es sich ändert? – jtbandes

Antwort

0

Ich habe eine if-Anweisung auf headingAccuracy basiert, wie von @jtbandes vorgeschlagen.

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

so bekomme ich immer Überschrift Updates, bis ich ein nützliches Ergebnis habe.

Verwandte Themen