Как рассчитать расстояние CLLocation между двумя точками CLLocation, используя в качестве пути массив CLLocations, а не прямую линию - PullRequest
0 голосов
/ 12 марта 2019

У меня есть 2 CLLocation координаты, и я хочу знать расстояние между ними, используя в качестве пути массив координат, идущих из точки A в B. Я знаю, как рассчитать расстояние от точки A до B, но проблема в том, что онокажется, измеряется по прямой линии, а не по заданному маршруту.Есть идеи, как сделать это эффективно?

1 Ответ

1 голос
/ 12 марта 2019

Это очень просто, если у вас есть все CLLocations.Только одна строка кода может сделать это.Например:

     var locations : [CLLocation] = [CLLocation.init(latitude:   CLLocationDegrees(10.00000), longitude: CLLocationDegrees(100.00000)),
     CLLocation.init(latitude: CLLocationDegrees(10.00001), longitude:    CLLocationDegrees(100.00001)),
     CLLocation.init(latitude: CLLocationDegrees(10.00002), longitude: CLLocationDegrees(100.00002)),
     CLLocation.init(latitude: CLLocationDegrees(10.00003), longitude: CLLocationDegrees(100.00003)),
     ]


   let  totalDistance = locations.dropFirst().reduce((locations.first!, 0.0)) {  ($1 , $0.1 + $0.0.distance(from: $1)) }.1


   print(totalDistance)
...