首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在设备未移动时调用didupdatelocation

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

Stack Overflow用户
提问于 2013-02-20 10:07:01
回答 3查看 981关注 0票数 4

我使用CLLocation作为一个应用程序,它可以记录人们跑步或行走时在地图视图中的轨迹,但我发现当我的设备仍然(未移动)时,-(空)locationManager:(CLLocationManager*)管理器didUpdateLocations:(NSArray *)位置也被频繁调用?目前,我的位置管理器的desiredAccuracy是10米,distanceFilter是10。

如何处理这种情况?我试过使用较大的距离过滤器值(例如150),但我发现如果我这样做,我就无法准确记录人们在跑步或行走的时间

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-20 10:25:28

全球定位系统不准确。你可以移动几英尺,得到相同的位置。或者你可以静静地坐着,然后被告知你已经移动了几英尺。

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

票数 6
EN

Stack Overflow用户

发布于 2013-02-20 10:18:14

您是否在初始startUpdatingLocation之后调用了stopUpdatingLocation?如果你不调用它,它会不断更新位置。

票数 3
EN

Stack Overflow用户

发布于 2017-08-04 01:07:57

系统如何知道您是否已实际移动?它必须获取你的位置才能找出答案。你想要的精确度越准确,它看起来就越有活力,越频繁。我的意思是,如果它打算使用手机发射塔信息,那么它将研究更多的手机发射塔,以更好地进行三角测量。或者简单地说,它的获取之间的间隔会更小。总结:即使你不移动,操作系统也会获取数据。

此外,为了三角定位你的位置,操作系统(取决于你的desiredAccuracy和以前的移动)将使用全球定位系统,wifi,蜂窝发射塔的混合。由于有人可能突然关闭/打开他们的wifi,或者你用来获取位置的卫星移动了一点,或者卫星发生了变化,或者蜂窝发射塔信号可能由于其带宽限制而变得或多或少准确,那么你计算出的位置可能会改变,如果它超过了你的distanceFilter,就会触发回调。(我不相信你会以低于distanceFilter的价格得到回调,但我可能错了)这可能意味着你的distanceFilter被设置为非常小的数字,这取决于你的业务需求可能是也可能不是一个好的选择。总结:你的位置永远不会100%准确

周期性抓取的结果、出错的可能性和较小的distanceFilters都可能导致错误的locationChanges。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14971140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档