#記事一覧
Swift MkMapViewで地図アプリ作成してみた(記事一覧)
#前提条件
(02)- 現在位置を取得するで取得した位置情報から、速度、平均速度、最高速度を求める。
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]) {
// この関数で受信した位置情報から、速度、平均速度、最高速度を求める。
let lonStr = (locations.last?.coordinate.longitude.description)! // 経度
let latStr = (locations.last?.coordinate.latitude.description)! // 緯度
}
#位置情報から速度、平均速度、最高速度を求める
###速度を求める
locations.last!.speedで秒速が取得できる。
時速に変換したい場合は、以下の通りとなる。
秒速を時速に変換する
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]) {
// 秒速を少数第2位の時速に変換
let speed: Double = floor((locations.last!.speed * 3.6)*100)/100}
###平均速度を求める
速度の合計値を受信回数で除算するとで、平均速度を求めることができる。
平均速度を求める
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]) {
// 平均速度の更新
self.avgSumSpeed += locations.last!.speed
self.avgSumCount += 1
let tmpAvgSpeed = floor(((self.avgSumSpeed / Double(self.avgSumCount)) * 3.6)*100)/100
###最高速度を求める
単純に過去の最高速度を保存する。
最高速度を求める
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]) {
// 秒速を少数第2位の時速に変換
let speed: Double = floor((locations.last!.speed * 3.6)*100)/100}
// 最高速度
if speed > dMaxSpeed {
dMaxSpeed = speed
}