1

我正在使用 CLLocationDistance 计算两个 lat 和 lng 之间的距离,我给第一个 lat 和 lng 提供了一些静态值,第二个 lat 和 lng 是我当前的位置,即使我到达确切位置,lat 和 lng 之间的差异是20 英尺或 15 英尺。

正在使用公式将 CLLocationDistance 输出转换为英尺

CLLocationDistance distance = [locA distanceFromLocation:locB];

float feet= distance  *3.28084;

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

4

1 回答 1

0

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

如果您想知道为什么在纬度和经度看起来相同的两个位置之间没有收到“零”距离,那么在为静态定义的位置设置纬度和经度时,您可能没有考虑足够的有效数字。话虽如此,小数点后六位通常足以在一英尺之内。(参见_ W​​ikipedia:WikiProject Geographical coordinates._ 中的精度准则。_)

虽然在实践中,它可能永远不会为零(而且肯定不会比您的位置更好horizontalAccuracy),但如果您在静态定义的位置中指定了足够多的有效数字,您应该接近 15-20 英尺。

另请注意,如果您使用的是CLLocationManagermethod startUpdatingLocation,那么您获得的初始位置总是不是使用的最佳值,就像您指定desiredAccuracyof一样kCLLocationAccuracyBest,它通常会需要几次调用您的didUpdateLocations(通常会提高准确性,即降低horizontalAccuracy) . 因此,请继续监控报告的位置,didUpdateLocations直到您获得一个horizontalAccuracy您认为可以接受的范围内(但不要期望获得完美的准确性,因为这永远不会发生,并且它受设备的物理环境的影响,也)。

于 2013-10-29T15:25:11.553 回答