目标 c - 核心位置 - iPhone SDK 中的精度问题



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

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

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

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

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

听起来设备没有GPS锁。您是否在里面运行应用程序?

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

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
    fromLocation:(CLLocation *)oldLocation
{
    NSLog("%f", newLocation.horizontalAccuracy);
}

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

最新更新