Ich arbeite an einer laufenden App, daher ist die Berechnung der gesamten Entfernung, die jemand zurückgelegt hat, wichtig für mein Projekt. In meiner Methode didUpdateLocations hänge ich die neuen Positionen an ein Array an und berechne dann den Abstand zwischen den beiden letzten Werten. Die erste Berechnung ist jedoch eine absurd große Zahl. Probleme bestehen unabhängig davon, welche Genauigkeitseinstellungen ich verwende.CLLocation distanceFromLocation gibt falsche Antwort zurück, dann richtige Antworten
Einige Code:
var locationIndex = 0 var distanceTraveled: CLLocationDistance = 0.0 var allLocations = [CLLocation]() func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { print(allLocations.count) if locations[0].horizontalAccuracy < 15 { self.allLocations.append(locations[0]) if allLocations.count > 1 { var distanceIncrement = CLLocationDistance() distanceIncrement = allLocations[allLocations.endIndex - 2].distanceFromLocation(allLocations[allLocations.endIndex - 1]) self.distanceTraveled += distanceIncrement print(distanceTraveled) } } else { print("Invalid") } }
Was passiert, wenn ich drucke (distanceTraveled), der erste Wert ist zum Beispiel 34,5 bei der Simulation einen Lauf, was absurd ist, da es bedeutet, dass Der Läufer bewegte sich in etwa 1,3 Sekunden (die Zeit zwischen den Updates) um 34,5 Meter. Dann, nach dem ersten Druck, erhöht sich die Zahl um angemessene Beträge, zum Beispiel: 34,5, 39,8, 43,3, etc ... Manchmal kann die erste gedruckte Zahl sogar in den 500s sein, was offensichtlich nicht korrekt ist. Ist das ein Problem mit dem Simulator oder meiner Implementierung? Was kann ich tun, um das zu beheben?
http://stackoverflow.com/a/28953613/2303865 –