使用CLLocationDistance计算两个lat和lng之间的距离,我给第一个lat和lng&第二个lat和lng是我当前的位置,即使我到达确切的位置,lat和lng之间的差异是20英尺或15英尺。
使用公式
将CLLocationDistance输出转换为英尺CLLocationDistance distance = [locA distanceFromLocation:locB];
float feet= distance *3.28084;
如何获得两个lat和lng之间的准确距离?
答案 0 :(得分:0)
你的算法看起来是正确的。
如果您想知道为什么在纬度和经度看起来相同的两个位置之间没有“零”距离,那么在为静态定义的位置设置纬度和经度时,可能没有考虑足够的有效数字。话虽如此,小数点后六位通常足以达到一英尺。 (参见_维基百科中的Precision Guidelines:WikiProject地理坐标._)
虽然在实践中,它可能永远不会为零(当然不会比你的位置horizontalAccuracy
更可靠),如果你在静态定义的位置指定了足够的有效数字,你应该接近15-20脚。
另请注意,如果您使用的是CLLocationManager
方法startUpdatingLocation
,则您获得的初始位置通常不是最佳使用值,就像您指定desiredAccuracy
kCLLocationAccuracyBest
一样通常会对您的didUpdateLocations
进行几次调用(通常会提高准确率,即递减horizontalAccuracy
)。因此,请继续监控didUpdateLocations
报告的位置,直到在您认为可接受的范围内获得horizontalAccuracy
(但不要期望得到完美的准确度,因为这绝不会发生,它也受设备的物理环境的影响。