-->

CLLocationCoordinate2D点之间的距离查找(Finding distance be

2019-06-25 13:57发布

我从文档知道我们可以发现两者之间的距离CLLocation使用功能,点distanceFromLocation: 但我的问题是我没有CLLocation数据类型和我在一起,我有CLLocationCoordinate2D点。 所以,我怎么能找到两个CLLocationCoordinate2D点之间的距离。 我已经看到了帖子后 ,但对我来说没有什么帮助。

Answer 1:

您应该创建使用CLLocation的对象,

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

然后,你应该能够使用计算出的距离

[location1 distanceFromLocation:location2];


Answer 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



Answer 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)
    }
}


Answer 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)
    }
}


Answer 5:

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

简易版Valleri的回答。 除以1000得到KM,随后转变成字符串。



Answer 6:

MKMetersBetweenMapPoints现在仅仅是一个实例方法MKMapPoint

let coordinate1 = CLLocationCoordinate2D(latitude: lat1, longitude: lon1)
let coordinate2 = CLLocationCoordinate2D(latitude: lat2, longitude: lon2)

let point1 = MKMapPoint(coordinate1)
let point2 = MKMapPoint(coordinate2)
let distance = point1.distance(to: point2)


文章来源: Finding distance between CLLocationCoordinate2D points