我正在開發一個正在運行的應用程序,因此計算某人旅行的總距離對於我的項目很重要。在我的didUpdateLocations方法中,我將新位置附加到一個數組,然後計算兩個最近值之間的距離。然而,第一個計算是一個荒謬的數字。無論我使用何種精度設置,問題都會持續存在。CLLocation distanceFromLocation返回錯誤的答案,然後正確的答案
一些代碼:
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") } }
會發生什麼事,當我打印(distanceTraveled)是第一個值,例如,34.5模擬運行,這是荒謬的,因爲它意味着當跑步者在大約1.3秒內(更新之間的時間)移動了34.5米。然後,在第一次打印後,數字會增加合理的數量,例如:34.5,39.8,43.3等...有時第一次打印的數字甚至可能在500s內,這顯然是不正確的。這是模擬器還是我的實現問題?我能做些什麼來解決這個問題?
http://stackoverflow.com/a/28953613/2303865 –