【发布时间】:2012-04-05 13:37:51
【问题描述】:
我正在编写一个监控用户位置的应用程序。我有一个使用 startMonitoringSignificantLocationChanges 的 CLLocationManager 对象,因此我可以在应用程序未运行时从后台获取位置更新。我已经设置了我的应用程序 didFinishLaunchingWithOptions 所以如果我得到一个位置密钥,我会启动我的经理来获取用户的位置。一切正常,但问题是每次我从背景中获取位置时,该位置的水平精度都非常差。在大多数情况下,它是 1414 米。
有谁知道为什么当位置来自背景时水平精度会这么差? 我可以做些什么来在后台获得更准确的位置吗?
当应用程序运行时,我获得的所有位置都非常准确,只有当位置来自后台时才会发生这种情况。这与我所在城市的手机信号塔数量有关吗?我在想也许设备不使用 wifi 节点的 gps 在后台获取位置。
无论如何,这里的任何帮助表示赞赏。 请分享您的想法。
谢谢!
【问题讨论】:
-
其他人的研究longweekendmobile.com/2010/07/22/… 提到“CLLocationManager 倾向于在很短的时间内报告多个事件,即使在后台(相隔不到 10 秒)......第二个事件会比第一个更准确”
-
布莱恩感谢您的链接。那里有一些非常有用的信息。他们在那里提到,从后台获取的位置精确到 500m,但这取决于您所在的城市。我一直在巴西利亚 - 巴西测试我的应用程序,到目前为止我得到的最佳精度是 1200m。
标签: iphone objective-c ios xcode cllocationmanager