【问题标题】:How to tell when CLLocationManager has a lock on the users location如何判断 CLLocationManager 何时锁定​​用户位置
【发布时间】:2014-04-13 02:28:42
【问题描述】:

如果 CLLocationManager 在我的应用程序中半工作。我启动 locationManager,设置委托和准确性。但是,一旦位置管理器启动我的地图,我的地图就会显示在某个海洋中?

有没有办法知道 CLLocationManager 什么时候有锁?

我有以下方法设置,但除非我走几步,否则它不会被调用。

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

我已经验证它全部在主线程上运行。

【问题讨论】:

  • 很多次我自己都在海洋中,这总是因为我在地图上显示位置时切换了经度和纬度,所以检查一下,检查你的准确性并在真实设备上进行(就在如果您使用的是模拟器...)

标签: ios objective-c cllocationmanager


【解决方案1】:

查看您在didUpdateLocations 中收到的CLLocation 对象的horizontalAccuracy 属性。在设备上,当您第一次启动定位服务时,您通常会注意到一系列位置的出现,horizontalAccuracy 值越来越小(即越来越准确的位置值)。这不是什么时候“锁定”的问题,而是您何时收到带有horizontalAccuracy 的位置,对于您的应用而言足够小。

就在您移动之前不会被调用的方法而言,这通常是您使用的 desiredAccuracydistanceFilter 值的函数。

【讨论】:

    【解决方案2】:

    在 CLLocationManager 中没有像 lock 这样的东西,

    这取决于您为位置管理器设置的属性,

    检查您的位置管理器的这些属性

    distanceFilter:设备在生成更新事件之前必须水平移动的最小距离(以米为单位)。

    desiredAccuracy :位置数据的准确性。

    您可以使用类方法locationServicesEnabled检查位置服务,用于检查设备上是否启用了位置服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2015-05-25
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      相关资源
      最近更新 更多