我使用CLLocationDistance来计算两个lat和lng之间的距离,我给了第一个lat和lng一些静态值&第二个lat和lng是我的当前位置,即使我到达了准确的位置,lat和lng之间的差异也是20英尺或15英尺。
我使用公式将CLLocationDistance输出转换为英尺
CLLocationDistance distance = [locA distanceFromLocation:locB];
float feet= distance *3.28084;如何获得两个纬度和lng之间的精确距离?
发布于 2013-10-29 23:25:12
你的算法看起来是正确的。
如果您想知道为什么在纬度和经度看起来相同的两个位置之间没有接收到“零”距离,那么在为静态定义的位置设置纬度和经度时,您可能没有考虑足够多的有效数字。话虽如此,六位小数通常足以到达一英尺的范围内。(参见维基百科:维基项目地理coordinates._中的Precision Guidelines )
虽然,在实践中,它可能永远不会是零(当然也不会比你所在位置的horizontalAccuracy更可靠),但如果你在静态定义的位置指定了足够多的有效数字,你应该比15-20英尺更近。
还要注意,如果你正在使用CLLocationManager方法startUpdatingLocation,你得到的初始位置总是不是最好的值,因为如果你指定desiredAccuracy of kCLLocationAccuracyBest,它通常会调用你的didUpdateLocations几次(通常是随着精度的增加,即horizontalAccuracy的减少)。所以,继续监测didUpdateLocations报告的位置,直到你得到的horizontalAccuracy在你认为可以接受的范围内(但不要期望获得完美的准确性,因为这永远不会发生,而且它也受到设备物理环境的影响)。
https://stackoverflow.com/questions/19661666
复制相似问题