0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Swift MkMapViewで地図アプリ作成してみた(18)- 位置情報から速度、平均速度、最高速度を求める

Last updated at Posted at 2020-03-29

#記事一覧
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
    }
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?