核心位置 - iphone sdk 中的准确性问题

Posted

技术标签:

【中文标题】核心位置 - iphone sdk 中的准确性问题【英文标题】:Core Location - Accuracy problem in iphone sdk 【发布时间】:2011-05-19 17:28:03 【问题描述】:

我在 50 米范围内的两台设备中安装了一个应用程序。应用程序在 2000 英尺内找到附近的在线用户。但是我无法找到另一个就在我附近(50 米以内)并且绝对在线的用户,当我检查时发现设备位置的差异超过 2000 英尺。那么这可能是什么原因呢?为什么两个彼此靠近的用户在 2000 英尺范围内没有通过应用程序找到彼此。我使用 corelocation 框架来确定用户当前的位置。并设置其最佳准确度级别。计算用户之间距离的公式也是标准的

所以这里的问题是关于核心位置的准确性。如何解决此类问题??为什么即使设置了最佳精度,设备也没有显示正确的位置。

【问题讨论】:

【参考方案1】:

即使您在户外可以清楚地看到 GPS 卫星,核心定位也可能需要 10 到 30 秒才能在一定的可用精度范围内确定您的位置。水平精度通常从 1750 米左右开始,最终缩小到 5 米以内。

您可以尝试向您的用户提供一些视觉指示,表明该应用仍在尝试定位他们的手机,然后等到您获得准确的读数。

另外,如果您使用的是 iPhone 4,还有另一个精度级别可用,称为 kCLLocationAccuracyBestForNavigation,它显然比 kCLLocationAccuracyBest 更准确。

【讨论】:

与核心位置相比,从 MkMapView 获得的用户位置有多准确?哪个更准确? 我从未使用过 MkMapView,所以我不确定,但我会假设 MkMapView 在后台使用 CoreLocation,所以它们应该具有相同的准确性。【参考方案2】:

听起来设备没有获得 GPS 锁定。你在里面运行应用程序吗?

您可以通过检查返回位置的水平精度来检查 iPhone 设法获得的精度:

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

    NSLog("%f", newLocation.horizontalAccuracy);

任何太大(数百米)的东西,你都知道你还没有获得 GPS 锁定。

【讨论】:

与核心位置相比,从 MkMapView 获得的用户位置有多准确?哪个更准确? MKMapView 使用 CoreLocation,所以它们都是一样的

以上是关于核心位置 - iphone sdk 中的准确性问题的主要内容,如果未能解决你的问题,请参考以下文章

iPhone SDK:CLocationAccuracy。啥常数映射到啥定位技术?

核心位置的准确性

(iphone) 核心定位在室内的精度如何?

如何通过代码获取 iPhone 的当前位置?

Lat,Long 值不准确到 iphone 中的当前位置

如何找出 iphone CoreLocation Data 的来源?