Ant*_*ony 3 xcode objective-c latitude-longitude ios swift
我的应用程序需要能够获取用户的起始位置,然后计算距该点(在所有方向)特定距离的纬度/经度坐标。有谁知道我怎么可能做到这一点?
我在这个链接上找到了我的答案Move a CLLocation by x 米并将其移植到 Swift 中。
func locationWithBearing(bearing:Double, distanceMeters:Double, origin:CLLocationCoordinate2D) -> CLLocationCoordinate2D {
let distRadians = distanceMeters / (6372797.6) // earth radius in meters
let lat1 = origin.latitude * M_PI / 180
let lon1 = origin.longitude * M_PI / 180
let lat2 = asin(sin(lat1) * cos(distRadians) + cos(lat1) * sin(distRadians) * cos(bearing))
let lon2 = lon1 + atan2(sin(bearing) * sin(distRadians) * cos(lat1), cos(distRadians) - sin(lat1) * sin(lat2))
return CLLocationCoordinate2D(latitude: lat2 * 180 / M_PI, longitude: lon2 * 180 / M_PI)
}
Run Code Online (Sandbox Code Playgroud)
摩根陈写道:
此方法中的所有数学运算均以弧度计算。在该方法开始时,出于此目的,lon1 和 lat1 也被转换为弧度。轴承也是弧度。请记住,此方法考虑了地球的曲率,对于小距离,您实际上不需要这样做。
| 归档时间: |
|
| 查看次数: |
5271 次 |
| 最近记录: |