iphone – 从背景获取位置时Location.Horizo??ntalAccuracy太糟
我正在编写一个监控用户位置的应用程序.我有一个使用startMonitoringSignificantLocationChanges的CLLocationManager对象,因此当应用程序未运行时,我可以从后台获取位置更新.我已经设置了我的应用程序didFinishLaunchingWithOptions,所以如果我得到一个位置键,我会启动我的经理以获取用户的位置.一切正常,但问题是,每次从背景获取位置时,此位置的水平精度非常差.在大多数情况下,它是1414米.
有人知道为什么当位置来自背景时水平精度如此糟糕? 当应用程序运行时,我得到的所有位置都非常准确,这只有在位置来自背景时才会发生.这与我在我所在城市的手机信号塔数量有什么关系吗?我想也许设备不使用gps的wifi节点来获取后台的位置. 无论如何,这里的任何帮助表示赞赏. 谢谢! 解决方法
CLLocationManager返回的位置的准确性由
desiredAccuracy 确定,默认情况下为kCLLocationAccuracyBest,以及设备的可用精度.例如,如果设备的电池电量不足,您可能会得到不太准确的位置,或者如果它们仍然从另一个应用程序缓存,您可能会得到更准确的位置.
然而,获得令人难以置信的精确坐标会耗尽电池的大量电量并耗尽设备.后台应用可能仅限于更低的精度分辨率,以提高电池性能. 准确的位置需要大量的电力来使用GPS无线电,而不太准确的位置可以依赖附近的WiFi热点和手机范围内的手机信号塔. 当您的应用程序从后台恢复时,系统将尝试提高您获得的结果的准确性.这是一个棘手的概念,但请查看手机上的地图应用程序.首先,代表您所在位置的圆圈非常大;随着系统更准确地了解您的位置,圆圈变小.此可视化表示手机使用更多功率来获得更精确的位置. 当您的应用程序从后台恢复时,您会看到与CLLocationManager类似的现象:您将获得一个不准确的位置并接收后续更准确的更新. 这是Apple在设计API时必须在便利性和电池寿命之间做出的折衷.对用户位置的第一次更新可能不会那么准确,除非他们只是使用地图应用程序并且位置被缓存. 我能给你的最好建议是听取位置管理员的后续更新并相应地更新你的用户界面.祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |