我的距离计算功能有点问题,这是我们在tsum == 1
实际上在运行时(在我的真实应用中,在模拟器中),t1 + t2 + t3 == 1.0000000000000002
它真的很奇怪,因为当我手动计算它时,我有1
但是ios似乎并不同意。 你能解释一下吗?
P.S:这是一个到操场的链接 https://drive.google.com/drive/folders/0B6uRRn4bFMAeN3kwSVc4dUVQcDQ?usp=sharing
答案 0 :(得分:3)
如果您正在寻找可在Apple平台上运行的内容,请使用
import CoreLocation
let lat0 = 0.0
let lon0 = 0.0
let lat1 = 90.0
let lon1 = 180.0
let l0 = CLLocation(latitude: lat0, longitude: lon0)
let l1 = CLLocation(latitude: lat1, longitude: lon1)
let distance = l0.distance(from: l1) // in meters
如果您不喜欢,请替换您的公式
d = acos(sinφ1⋅sinφ2+cosφ1·cosφ2·cosΔλ)·R
与
a =sin²(Δφ/ 2)+cosφ1·cosφ2⋅sin²(Δλ/ 2)
c =2⋅atan2(√a,√(1-a))
d = R·c
这被称为 hasrsine 公式。在atan2函数的帮助下,您可以避免浮点数学问题