私は実行中のアプリを開発中ですので、誰かが旅行した合計距離を計算することは私のプロジェクトにとって重要です。私のdidUpdateLocationsメソッドでは、新しい場所を配列に追加して、2つの最新の値の間の距離を計算しています。しかし、最初の計算は馬鹿馬鹿しいほどです。私が使っている精度の設定に関係なく問題は残っています。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などのように合理的な金額で数字が増加します。最初に印刷された数字が500になることもありますが、これは明らかに正しくありません。これはシミュレータの問題ですか、実装ですか?これを修正するにはどうすればよいですか?
http://stackoverflow.com/a/28953613/2303865 –