ios - distanceFromLocation 方法如何工作?

标签 ios core-location cllocation

我经常对 CLLocation 对象使用 distanceFromLocation 方法来获取它们与其他位置的距离。枚举 CLLocations 数组,然后使用此方法将每个 CLLocations 与我的引用位置进行比较。

我很想知道使用 distanceFromLocation 对处理/内存的影响,尤其是对于连续的大量 CLLocation 对象。这种方法是如何工作的——它是连接到服务器以获取数据,还是根据一些数学公式计算距离,例如 Haversine Formula

是否有更有效的方法来比较 1 个引用位置与 CLLocation 对象数组之间的距离?

最佳答案

他们很可能使用的是余弦球面法则而不是半正弦法则 (why? see this question)。

如果您只想将多个点与一个点进行比较以查看哪个点最接近,那么您可能并不关心计算距离的准确性,而只关心性能。在那种情况下,也许使用毕达哥拉斯定理对您有用。

所有这些算法在 this web page 上都有详细说明,部分内容是:

If performance is an issue and accuracy less important, for small
distances Pythagoras’ theorem can be used on an equirectangular
projection:*

您可以使用毕达哥拉斯定理实现一个函数,然后将其与 CLLocation 中的函数以及我对 distanceInMetersFromRadians 的实现进行基准测试它使用余弦球定律来查看性能差异有多大。

关于ios - distanceFromLocation 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15549534/

相关文章:

ios - 视频全屏在 ios Swift AVPlayer 中不起作用?

ios - 不时更新位置

ios - iOS 8.1 中未调用 didUpdateUserLocation

ios - 区域监控仅在边界交叉处有效?

ios - 我们如何将具有库的 sdk/Framework 共享给其他项目?

iphone - 光标出现在自定义的 UITextField 背景图像之前

ios - 加载 View 或重新加载表格 View 时如何在 UITableview 中显示最后添加的单元格?

ios - 打电话时获取用户位置

ios - didUpdateLocations 只调用一次然后停止触发

iPhone SDK : Track users location using GPS