Расстояние между двумя координатами с CoreLocation - PullRequest
18 голосов
/ 28 августа 2009

Мне нужно рассчитать расстояние (в метрах и милях) между двумя заданными координатами

Как я могу это сделать?

Ответы [ 4 ]

26 голосов
/ 28 августа 2009

Возвращает расстояние (в метрах) от координаты получателя до координаты указанного местоположения.

// Deprecated in iOS 3.2 method
- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

// Correct method
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

CLLocation

18 голосов
/ 03 июня 2011

Метод в предыдущем ответе был устарел в iOS 3.2 . Новый метод очень похож

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

, который также возвращает расстояние в метрах. Это учитывает кривизну земли.

0 голосов
/ 07 февраля 2018

Свифт 3

func distance(from location: CLLocation) -> CLLocationDistance Description 

Возвращает расстояние (измеряется в метрах)

например.

locations: [CLLocation]

let location: CLLocation = locations.last!

let distance = location.distance(from: CLLocation(latitude: CLLocationDegrees(oldLocationLat), longitude: CLLocationDegrees(oldLocationLng)))
0 голосов
/ 07 февраля 2018

Свифт 3 расстояние до функции (от местоположения: CLLocation) -> CLLocationDistance Описание Возвращает расстояние (измеренное в метрах) от местоположения получателя до указанного местоположения. Этот метод измеряет расстояние между двумя точками, отслеживая линию между ними, которая следует за кривизной Земли. Результирующая дуга является гладкой кривой и не учитывает конкретные изменения высоты между двумя точками. Параметры
место нахождения Другое место. Возвращает Расстояние (в метрах) между двумя точками. SDK iOS 3.2+, macOS 10.6+, tvOS 9.0+, watchOS 2.0+ Объявлено в основном месте Дополнительная информация о методе

, например

let distance = location.distance(from: CLLocation(latitude: 
CLLocationDegrees(oldLocationLat), longitude: 
CLLocationDegrees(oldLocationLng)))
...