我的应用程序需要能够获取用户的起始位置,然后计算距该点(在所有方向)的特定距离的纬度/经度坐标。有谁知道我如何实现这个目标?
我在此链接上找到了答案将 CLLocation 移动 x 米 https://stackoverflow.com/questions/7278094/iphone-moving-a-cllocation-by-x-meters/20241963#20241963并将其移植到 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)
}
摩根陈写道:
此方法中的所有数学运算均以弧度为单位。在开始时
方法,为此将 lon1 和 lat1 转换为弧度,如下所示
出色地。方位角也以弧度为单位。请记住,此方法考虑了
考虑地球的曲率,你实际上不需要这样做
对于短距离。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)