为什么在移动设备时调用didupdatelocation

时间:2013-02-20 02:07:01

标签: ios objective-c cllocation

我将CLLocation用于在地图视图中运行或行走时记录人物痕迹的应用程序,但我发现当我的设备静止(未移动)时, - (void)locationManager :( CLLocationManager *)manager didUpdateLocations :( NSArray *)位置也经常被调用? 目前,我的位置管理员所需的精度为10米,distanceFilter为10。

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

您是否在初始stopUpdatingLocation之后致电startUpdatingLocation?如果你不打电话,它会不断更新位置。

答案 2 :(得分:1)

系统如何知道您是否真的感动了?它必须获取您的位置以找出答案。您所需的准确度越准确,它看起来就越频繁和频繁。我的意思是,如果它假设使用细胞塔信息,那么它会调查更多的细胞塔以更好地进行三角测量。或者简单地说,它的提取之间的间隔会更小。 结论:即使您不移动,操作系统也会获取数据

此外,为了对您的位置进行三角测量,操作系统(取决于您所需的精度和之前的动作)将使用GPS,wifi,Cell-tower的混合。并且因为有人可能突然关闭/打开他们的无线网络,或者您用来获取位置的卫星移动了一点或者卫星已经改变,或者由于其带宽,小区塔信号可能变得或多或少准确限制然后您的计算位置可能会更改,如果它超过您的distanceFilter,则触发回调。 (我不相信你得到的回调少于你的distanceFilter,但我可能错了)这可能意味着你的distanceFilter被设置为非常小的数字,这取决于你的业务需求可能是也可能不是一个好选择。 结论:您的位置永远不会100%准确

定期提取的结果,错误的可能性和小距离过滤导致可能的错误locationChanges。