计算两个 CLLocationCoordinate2D 位置之间的偏移量

Posted

技术标签:

【中文标题】计算两个 CLLocationCoordinate2D 位置之间的偏移量【英文标题】:Calculate offset between two CLLocationCoordinate2D locations 【发布时间】:2016-08-31 15:47:59 【问题描述】:

我需要确定两个 CLLocation 对象之间的纬度/经度偏移量。我已经看过很多关于如何根据距离和方位计算新位置的示例,但这不是我需要的。

在我的例子中,这两个位置是已知的,我想要获得的是两个已知位置之间的 CLLocationDegrees 纬度和 CLLocationDegrees 经度,以便将偏移量应用于其他坐标。

class func getDistancesInDegrees(origin:CLLocationCoordinate2D, destination:CLLocationCoordinate2D) -> (degLat: CLLocationDegrees, degLon:CLLocationDegrees) 
    var latidueDegrees:CLLocationDegrees = 0.0
    var longitudeDegrees:CLLocationDegrees = 0.0

    //...

    return (degLat: latidueDegrees, degLon:longitudeDegrees)

有没有人知道如何做到这一点的好例子?谢谢!

【问题讨论】:

抱歉,我想了解您到底在寻找什么...您是否想获得两点之间的角度差? @ZGski - 我想得到的是沿经度轴的距离和沿纬度轴的距离,而不是角度距离 【参考方案1】:

如果您使用的是 google maps sdk,您可以使用 GMSGeometryDistance 查找 2 个位置之间的距离。

let distance = GMSGeometryDistance(origin, destination)

参考https://developers.google.com/maps/documentation/ios-sdk/reference/group___geometry_utils.html#ga423e751bcbe4ea974049f4b78d90a86b

【讨论】:

【参考方案2】:

如果我理解,您想要得到的是 2 个已知位置之间的距离(以度为单位)?

如果是这样,请尝试:

class func getDistancesInDegrees(origin:CLLocationCoordinate2D, destination:CLLocationCoordinate2D) -> (degLat: CLLocationDegrees, degLon:CLLocationDegrees) 
    var latidueDegrees:CLLocationDegrees = Double(origin.coordinate.latitude) - Double(destination.coordinate.latitude)
    var longitudeDegrees:CLLocationDegrees = Double(origin.coordinate.longitude) - Double(destination.coordinate.longitude)

    return (degLat: latidueDegrees, degLon:longitudeDegrees)

【讨论】:

以上是关于计算两个 CLLocationCoordinate2D 位置之间的偏移量的主要内容,如果未能解决你的问题,请参考以下文章

考虑缩放级别的两点之间的 CLLocationCoordinate2D 距离

在 cgPath 上的两个坐标之间添加中点

计算远离一个坐标的新坐标x米和y度

MKPolygon - 如何确定 CLLocationCoordinate2D 是不是在 CLLocationCoordinate2D 多边形中?

如何从CoreLocation中的两个坐标获得对称坐标

[CLLocationCoordinate2d]?没有名为 subscript 的成员