首页 文章

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

提问于
浏览
2

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

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

3 回答

  • 3

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

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

  • 4

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

  • 0

    系统如何知道您是否真的感动了?它必须获取您的位置以找出答案 . 您所需的准确度越准确,它看起来就越频繁和频繁 . 我的意思是,如果它假设使用细胞塔信息,那么它会调查更多的细胞塔以更好地进行三角测量 . 或者简单地说,它的提取之间的间隔会更小 . Concluding: OS would fetch data even if you don't move .

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

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

相关问题