Подтвердить что ты не робот

Нахождение расстояния между точками CLLocationCoordinate2D

Из документации я знаю, что мы можем найти расстояние между двумя точками CLLocation с помощью функции distanceFromLocation:. Но моя проблема в том, что у меня нет типа данных CLLocation, у меня есть точки CLLocationCoordinate2D. Итак, как я могу найти расстояние между двумя точками CLLocationCoordinate2D. Я видел сообщение , но не помог мне.

4b9b3361

Ответ 1

Вы должны создать объект CLLocation, используя,

- (id)initWithLatitude:(CLLocationDegrees)latitude
    longitude:(CLLocationDegrees)longitude;

Затем вы сможете рассчитать расстояние, используя

[location1 distanceFromLocation:location2];

Ответ 2

Если вам удобно дистанцироваться в метрах между точками, то

CLLocationCoordinate2D coordinate1 = <some value>
CLLocationCoordinate2D coordinate2 = <some value>
…
MKMapPoint point1 = MKMapPointForCoordinate(coordinate1);
MKMapPoint point2 = MKMapPointForCoordinate(coordinate2);
CLLocationDistance distance = MKMetersBetweenMapPoints(point1, point2);

вернет расстояние между двумя точками. Нет необходимости создавать CLLocation с помощью CLLocationCoordinate2D. Эти определения доступны, поскольку iOS 4.0

Ответ 3

Свифт 4:

extension CLLocation {

    /// Get distance between two points
    ///
    /// - Parameters:
    ///   - from: first point
    ///   - to: second point
    /// - Returns: the distance in meters
    class func distance(from: CLLocationCoordinate2D, to: CLLocationCoordinate2D) -> CLLocationDistance {
        let from = CLLocation(latitude: from.latitude, longitude: from.longitude)
        let to = CLLocation(latitude: to.latitude, longitude: to.longitude)
        return from.distance(to)
    }
}

Ответ 4

Swift4:, объединенные над мыслями

extension CLLocationCoordinate2D {
    //distance in meters, as explained in CLLoactionDistance definition
    func distance(from: CLLocationCoordinate2D) -> CLLocationDistance {
        let destination=CLLocation(latitude:from.latitude,longitude:from.longitude)
        return CLLocation(latitude: latitude, longitude: longitude).distance(from: destination)
    }
}

Ответ 5

    let point1 = MKMapPointForCoordinate(myLocation)
    let point2 = MKMapPointForCoordinate(friendLocation)
    let distance = MKMetersBetweenMapPoints(point1, point2)/1000
    let distanceStr = NSString(format: "%.3f", distance)

Простая версия ответа Валлери. Разделите на 1000, чтобы получить KM с последующим преобразованием в строку.

Ответ 6

CLLocationDistance - это измерение в метрах.

let point1 = CLLocationCoordinate2D(latitude: lat1, longitude: lon1)
let point2 = CLLocationCoordinate2D(latitude: lat2, longitude: lon2)
let distance = point1.distance(to: point2)