应用程序和谷歌地图中的距离之间的CLLocation差异

Posted

技术标签:

【中文标题】应用程序和谷歌地图中的距离之间的CLLocation差异【英文标题】:CLLocation discrepancy between distances in app & google maps 【发布时间】:2016-07-02 13:56:59 【问题描述】:

我正在获取 2 个位置之间的距离:

    来自 Google 地图:距离 = 1.5 公里(大约)(正确) 从应用程序使用CLLocation:距离 = 0.83 公里(大约)(不正确)

位置坐标为:

当前位置:19.0174941,72.8557548 目的地位置:19.0205907,7​​2.8540556

下面是我用来计算距离的代码:

CLLocation *destination = [[CLLocation alloc] initWithLatitude:[latitude doubleValue]  longitude:[longitude doubleValue]];
CLLocationDistance distance = [destination distanceFromLocation:currentLocation]/1000.0;

我无法理解为什么这两种方法会有如此大的差异。谁能指导我如何从两种方式获得相同的距离。

【问题讨论】:

【参考方案1】:

带有 Google SDK 的 Google 地图可以为您提供实际的道路距离,而 CLLocation 可以为您提供 2 个坐标之间的距离,因为它是一条直线。所以有这个区别。

请查看苹果文档here。

此方法通过追踪来测量两个位置之间的距离 它们之间的一条线,沿着地球的曲率。这 产生的圆弧是平滑曲线,不考虑 两个位置之间的特定高度变化。

【讨论】:

这意味着我们永远无法使用 CLLocation Manager 获得准确的距离? @iYoung 请查看 Apple 文档对此有何评论,我已经更新了答案。

以上是关于应用程序和谷歌地图中的距离之间的CLLocation差异的主要内容,如果未能解决你的问题,请参考以下文章

与在线工具和谷歌地图相比,为啥我的 Python hasrsine 距离计算错误?

如何使用 javascript 和谷歌地图更改地图中的位置?

如何在android中的谷歌地图上绘制路线并计算多个标记之间的距离

GPS 追踪器与 jQuery 移动、PhoneGap 和谷歌地图

即时运行和谷歌地图的问题

Laravel 和谷歌地图:foreach 纬度/经度显示标记或地图