2

这在 CLLocationManager 类参考中有所说明:

在请求高精度位置数据时,位置服务传递的初始事件可能没有您请求的准确性。

这真的影响了我的应用程序。如何确保找到的位置是正确准确的?

我尝试使用第 4 次或第 5 次更新而不是第一次检索到的位置,但这不是一个好的解决方案。任何的想法?

4

2 回答 2

4

您应该检查更新的准确性,CLLocation 包含horizontalAccuracy可用于检查准确性的属性。当CLLocation您发现足够准确时,您可以使用并忽略其他所有内容。

你应该告诉CLLocationManager你想要的准确度。为此,请在 中设置desiredAccuracy属性CLLocationManager

于 2013-02-11T08:32:21.800 回答
1

我认为你将不得不忍受这一点。苹果就是这样实现的。获得一个细粒度的位置需要时间,想想汽车中任何安装在挡风玻璃上的 GPS 设备需要多长时间才能确定它们的位置。

因此,它们不会让您的应用程序等待更长的时间,而是根据附近的基站和 WiFi 热点提供几乎立即可用的准确度。只有当 GPS 定位更可靠时,他们才会再次调用您的应用程序并通知您。

最后,这只是等待细粒度位置的问题:在您的应用程序中,您有机会使用您快速获得的更粗粒度的数据做某事,或者在他们的框架中没有在此期间,应用程序有机会做任何有用的事情。我认为,让你决定是更好的选择。

根据应用程序的类型,您可以拥有一张地图,该地图会在收到更好的位置数据时自动放大,在您期望的位置周围画一个较小的圆圈等。对于最终用户来说,没有什么比等待而没有得到任何东西更糟糕的了回馈。因此,即使这可能不是您想要的答案,我还是建议从用户的角度充分利用它。

于 2013-02-11T08:32:23.847 回答