2013-02-11 30 views
2

这在CLLocationManager类引用说:CLLocationManager不是很准确inital更新

当要求高精度的位置数据,通过位置服务交付的初始事件可能没有您所要求的精度。

这真的影响我的应用程序。我怎样才能确保找到的位置是正确的?

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

回答

4

您应该检查更新的准确性,CLLocation 包含一个属性horizontalAccuracy,您可以使用它来检查准确性。 当CLLocation的准确度足够准确时,您可以使用并忽略其他准则。

Als你应该电话CLLocationManager你想要的准确性。为此,请在CLLocationManager中设置desiredAccuracy财产。

+0

谢谢你的回答。我在其他地方看过这个解决方案,我会尽快尝试,尽管我不知道它如何计算未知的位置精度。 – CppChase 2013-02-11 15:23:00

+0

我试了一下,它的工作非常感谢。 – CppChase 2013-02-24 08:11:39

1

我认为你将不得不忍受这一点。这就是Apple如何实现它的。获得细粒度的位置需要时间,只需考虑汽车上安装任何挡风玻璃的GPS设备需要多长时间才能确定其位置。

因此,它不是让您的应用程序等待更长时间,而是基于附近的蜂窝塔和WiFi热点,几乎立即提供准确的可用性。只有当有更可靠的GPS定位时,他们才会再次打入您的应用并通知您。最后,这只是一个等待细粒度位置的问题:在您的应用程序中,您有机会使用您获得的更粗粒度数据进行处理,或者他们的框架没有机会在此期间做任何有用的应用。我想,让你决定是更好的选择。

根据应用类型的不同,您可以拥有一张地图,一旦更好的位置数据进入,就会自动放大地图,在您期望的位置周围绘制一个更小的圆圈。对于最终用户来说,等待没有得到任何反馈。所以,即使这可能不是您所希望的答案,但我建议从用户的角度来充分利用它。

+0

我同意强制等待用户的时间是疯狂的。但问题是,我的应用程序只需要一个位置,不需要更新。在地图上没有任何显示。它只是获得一个位置,并找到最近的公交车站,如果你有一个公交车站在100米以内,但没有价值,但前几个位置更新会给你在下一个社区的某个公交车站。 – CppChase 2013-02-11 15:16:42