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

问题描述 投票:3回答:3

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

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

ios objective-c cllocation
3个回答
6
投票

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

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


3
投票

你有没有在最初的stopUpdatingLocation之后打电话给startUpdatingLocation?如果你不打电话,它会不断更新位置。


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.