【问题标题】:Different distance between two points on iOS and AndroidiOS和Android上两点之间的距离不同
【发布时间】:2012-02-09 14:30:46
【问题描述】:

我正在尝试测量两点(经度、纬度)之间的距离。我的问题是我在 iOS 上得到的结果与在 Android 上不同。

我已经用这个site 进行了检查,结果是 Android 值是正确的。

我正在使用这个 MapKit 方法在 iOS 中获取距离:distanceFromLocation:

这是我的测试地点:

P1:48.643798、9.453735 P2:49.495150、9.782150

iOS 距离:97717 米 距离安卓:97673米

这怎么可能?我该如何解决?

【问题讨论】:

  • 他们实际上都使用相同的数据:请参阅下面的答案。

标签: objective-c ios mapkit distance


【解决方案1】:

所以我遇到了一个不同的问题,偶然发现了我们两个问题的答案:

在 iOS 上,您可以执行以下操作:

 meters1 = [P1 distanceFromLocation:P2]
 // meters1 is 97,717

 meters2 = [P2 distanceFromLocation:P1]
 // meters2 is 97,630

我进行了多次搜索,但无法找到造成差异的原因。由于它们是完全相同的点,因此无论您以哪种方式行驶,它都应该显示相同的距离。我将其作为错误提交给 Apple,他们将其作为副本关闭,但仍未修复。我建议任何想要修复此问题的人也将其作为错误提交。

同时,两者的平均值实际上是正确的值:

 meters = (meters1 + meters2)/2
 // meters (the average of the first two) is 97,673

显然Android没有这个问题。

【讨论】:

  • 数学的魔力。这将帮助我让客户平静下来。对此有什么解释吗?或者这样做是为了计算这两个值之间的平均距离吗?
  • 我已经搜索和搜索,但无法找到差异的原因。由于它们是完全相同的点,因此无论您以哪种方式行驶,它都应该显示相同的距离。我将其作为错误提交给 Apple,正在等待回复。
  • 在两个不同的视图控制器上显示距离,相同点的距离不同。调试调试了2个小时,发现是这个原因。这太疯狂了,应该由苹果解决!或者至少提到它是非关联的
【解决方案2】:

经度和纬度不是您所需要的全部。您必须使用相同的参考模型,如 WGS84 或 ETRS89。 地球不是一个精确的椭球体,所以你需要模型,没有一个模型是完全精确的,而且根据你使用的模型,距离会有所不同。

请确保您对 iOS 和 Android 使用相同的参考。

【讨论】:

  • 好的,我知道,但我无法设置此模型。如果 MapKit 框架在其他平台上使用不同的计算模型,我会感到惊讶。平台。
【解决方案3】:

根据您如何补偿地球曲率来计算长/纬度坐标之间的距离的方法不止一种,并且没有正确或错误的方法。很可能这两个平台使用的模型略有不同。

这里有一些自己计算的公式。 http://www.movable-type.co.uk/scripts/latlong.html

如果您绝对需要它们相同,只需使用这些公式之一实现您自己的计算,那么您可以确保在两个平台上获得相同的结果。

【讨论】:

  • 如果他们真的使用不同的计算模型,那将是我的选择。如果 iOS 和 Android 真的使用不同的计算模型,我会很感兴趣。
  • MapKit 是 Apple 代码,Android 是 Google 代码,即使 MapKit 使用 Google 的计算算法,也不能保证 Google 没有在其地图软件的后续版本之间进行调整。
猜你喜欢
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 2019-01-23
  • 1970-01-01
相关资源
最近更新 更多