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

时间:2016-08-31 15:47:59

标签: ios swift google-maps-sdk-ios

我需要确定两个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)
}

有人知道如何实现这一目标的一个很好的例子吗?谢谢!

2 个答案:

答案 0 :(得分:2)

如果您使用的是谷歌地图sdk,则可以使用GMSGeometryDistance查找2个地点之间的距离。

let distance = GMSGeometryDistance(origin, destination)

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

答案 1 :(得分:1)

如果我理解,你想要得到的是两个已知位置之间的距离?

如果是这样,那么试试:

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