CLLocationDistance,两个纬度和经度之间的英里和英尺给我的错误值iOS?

时间:2013-10-29 14:54:37

标签: ios iphone core-location

使用CLLocationDistance计算两个lat和lng之间的距离,我给第一个lat和lng&第二个lat和lng是我当前的位置,即使我到达确切的位置,lat和lng之间的差异是20英尺或15英尺。

使用公式

将CLLocationDistance输出转换为英尺
CLLocationDistance distance = [locA distanceFromLocation:locB];

float feet= distance  *3.28084;

如何获得两个lat和lng之间的准确距离?

1 个答案:

答案 0 :(得分:0)

你的算法看起来是正确的。

如果您想知道为什么在纬度和经度看起来相同的两个位置之间没有“零”距离,那么在为静态定义的位置设置纬度和经度时,可能没有考虑足够的有效数字。话虽如此,小数点后六位通常足以达到一英尺。 (参见_维基百科中的Precision Guidelines:WikiProject地理坐标._)

虽然在实践中,它可能永远不会为零(当然不会比你的位置horizontalAccuracy更可靠),如果你在静态定义的位置指定了足够的有效数字,你应该接近15-20脚。

另请注意,如果您使用的是CLLocationManager方法startUpdatingLocation,则您获得的初始位置通常不是最佳使用值,就像您指定desiredAccuracy kCLLocationAccuracyBest一样通常会对您的didUpdateLocations进行几次调用(通常会提高准确率,即递减horizontalAccuracy)。因此,请继续监控didUpdateLocations报告的位置,直到在您认为可接受的范围内获得horizontalAccuracy(但不要期望得到完美的准确度,因为这绝不会发生,它也受设备的物理环境的影响。