Iphone 从mapView检索当前用户位置,而不在屏幕上显示地图

Iphone 从mapView检索当前用户位置,而不在屏幕上显示地图,iphone,objective-c,ios,cllocationmanager,Iphone,Objective C,Ios,Cllocationmanager,我正在写一个应用程序,它可以存储你一整天去过的地方的位置。我对CLLocationManager做了很多研究,在过去的3周里一直在测试我的应用程序。我使用CLLocationManager获得的位置有时非常不准确,有时距离我所在的位置4或5英里。 我在我的测试应用程序中有一个日志,我意识到每次我得到一个新位置,我的didUpdateLocation方法都会被连续调用3次,比如在一秒钟内,我得到3个不同的位置。其中一个总是对的,但另外两个是错的。我已经用它进行了不同精度的测试(百米、最接近十米和最

我正在写一个应用程序,它可以存储你一整天去过的地方的位置。我对CLLocationManager做了很多研究,在过去的3周里一直在测试我的应用程序。我使用CLLocationManager获得的位置有时非常不准确,有时距离我所在的位置4或5英里。 我在我的测试应用程序中有一个日志,我意识到每次我得到一个新位置,我的didUpdateLocation方法都会被连续调用3次,比如在一秒钟内,我得到3个不同的位置。其中一个总是对的,但另外两个是错的。我已经用它进行了不同精度的测试(百米、最接近十米和最好),但仍然有相同的问题。因此,我的第一个问题是:

我是否可以找出这些位置中的哪一个是正确的,这样我就可以存储它

我还意识到,用户在地图视图上的当前位置总是非常准确的,因此我考虑从地图视图(蓝点)而不是CLLocationManager获取用户的位置,但我了解到,地图视图对象只有在地图实际在屏幕上时才会返回当前位置,事实并非如此,因为我希望我的应用程序在后台运行。第二个问题是:

是否可以在地图不显示在屏幕上的情况下从地图视图中获取用户的当前位置?或者至少使用mapView用于查找当前位置的相同技术

如果您对mapKit和CLLocationManager有任何经验,请分享您的想法


谢谢你抽出时间。非常感谢您的帮助。

看看苹果的示例代码,找到我。它使用变量:

CLLocation *bestEffortAtLocation;
在更新时确定位置是否小于上一个位置,以及是否小于在找到最准确位置之前设置的时间限制。 特别是查看示例代码中的GetLocationViewController。我在我的应用程序中使用了这段代码,效果非常好

我能找出这些地点中哪一个是正确的吗 一个这样我就可以保存它了

查看您接收的位置的
水平精度
属性。不要使用比你要找的位置更不准确的位置

我还意识到用户在地图视图上的当前位置是 总是非常准确


地图视图可能没有任何比您拥有的API更精确的特殊访问权限,它只是更好地使用了它们。每次需要修复时,不要从头开始,而是尝试缓存位置,然后在获得足够准确的新位置时进行更新。

Caleb,谢谢提示!!水平精度确实起到了作用。我原以为CLLocation manager不会返回比我在locationManager.desiredAccuracy中设置的位置更不准确的位置,但事实上确实如此!一旦我过滤掉所有比我期望的准确度低的位置,我就只能检索到好的位置了!我相信情况正好相反。。。CLLocationManager不会特意返回比您期望的准确度更准确的位置。提供更精确的修复通常意味着使用更多的电源。如果它碰巧知道你的确切位置,它会告诉你,但如果你不需要比最近的手机发射塔或wifi热点更精确的定位,它可能不会启动GPS接收器。休伯特,谢谢!代码对我帮助很大。它向我展示了如何使用HorizontalAccurance属性并仅选择准确的位置。