4

我将 CLLocation 用于在地图视图中记录人们跑步或行走时的轨迹的应用程序,但我发现当我的设备仍然(未移动)时,- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray * )locations 也经常被调用?目前,我的 locationmanager 的期望精度是 10 米,距离过滤器是 10。

如何处理这种情况?我尝试过使用大距离过滤器值(如 150),但我发现如果我这样做,那么我无法准确记录人们何时跑步或走路

4

3 回答 3

6

GPS 不准确。您可以移动几英尺并获得相同的位置。或者你可以静坐不动,然后被告知你已经移动了几英尺。

您也许可以结合加速度计的测量结果来确定您是否真的移动了,但这只有在设备坐在桌子上不动时才有效。

于 2013-02-20T02:25:28.370 回答
3

你有stopUpdatingLocation在初始之后打电话startUpdatingLocation吗?如果您不调用它,它将不断更新位置。

于 2013-02-20T02:18:13.970 回答
1

系统如何知道你是否真的搬家了?它必须获取您的位置才能找到。您期望的准确度越准确,它看起来就越有活力和频率。我的意思是,如果它假设使用蜂窝塔信息,那么它会研究更多的蜂窝塔以更好地进行三角测量。或者简单地说,它的获取之间的间隔会更小。结论:即使您不移动,操作系统也会获取数据

此外,为了对您的位置进行三角测量,操作系统(取决于您期望的准确度和之前的动作)将使用 GPS、wifi、蜂窝塔的组合。而且因为有人可能突然关闭/打开他们的 wifi,或者您用来获取位置的卫星移动了一点或卫星发生了变化,或者蜂窝塔信号可能由于其带宽而变得或多或少准确限制那么您计算的位置可能会发生变化,如果它超过您的距离过滤器,则会触发回调。(我不相信你得到的回调少于你的距离过滤器,但我可能是错的)这可能意味着你distanceFilter被设置为非常小的数字,这取决于你的业务需求可能是也可能不是一个好的选择。结论:您的位置永远不会 100% 准确

周期性抓取的结果、错误的可能性和小距离过滤器导致可能不正确的 locationChanges。

于 2017-08-03T17:07:57.423 回答