【问题标题】:Calculating Distance between two coordinates using CLLocation is different on two phones?在两部手机上使用 CLLocation 计算两个坐标之间的距离不同吗?
【发布时间】:2016-07-19 12:01:05
【问题描述】:

我正在使用 CoreLocation 框架计算两个坐标之间的距离,一个是用户的当前位置,另一个来自服务器,两部手机显示的差异约为。当手机彼此相邻时,距离为 25 米。我使用的是 iPhone 4s 和 iPhone 5s,这与两部手机上安装的 GPS 模块的准确性有关还是我的实施有问题?

CLLocationDistance distance = [newLocation distanceFromLocation:userLocation];

【问题讨论】:

  • 可能...你试过看坐标吗?

标签: ios coordinates core-location


【解决方案1】:

手持 GPS 或智能手机接收器都无法为您提供准确的位置。充其量您将获得大约 10 到 15 英尺(3 到 5 米)的精度。如果您在树下或被高楼包围,那么您可以预期 20 到 30 英尺(6 到 10 米)甚至更差的精度。只有测量员使用的专业 GPS 设备才能提供低于一英寸(2 厘米)的精度 https://support.groundspeak.com/index.php?pg=kb.page&id=673

准确性还取决于您用于手机的蜂窝/wifi 网络类型。我体验过,在 wifi 网络上获得的位置的准确性远远高于在蜂窝数据上。

当您在 CLLocationManager 的以下委托中获得位置更新时:-

- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation
{
}

调查您获得的新位置的“horizo​​ntalAccuracy”(newLocation.horizo​​ntalAccuracy)。这是坐标可能存在的米误差。

/*
 *  horizontalAccuracy
 *  
 *  Discussion:
 *    Returns the horizontal accuracy of the location. Negative if the lateral location is invalid.
 */
@property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;

希望对您有所帮助。

【讨论】:

  • 我正在检查更新位置的水平精度及其时间戳。如果位置被缓存,我只是将其丢弃。但据我观察,我没有得到低于 65.0 的水平精度,为什么会这样?
  • 除了我提到的所有上述因素(n/w 类型、海拔和环境、城市与乡村)。你在印度测试吗? iOS 的定位服务在美国、欧洲、日本和其他一些地方运行良好。但即使我在印度进行测试,我的水平精度也很少低于 50。如果您需要测试您的逻辑,请尝试使用 GPX 文件进行测试。
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 2020-02-12
  • 2018-06-12
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多