【问题标题】:How to manually trigger CLLocationManager update?如何手动触发 CLLocationManager 更新?
【发布时间】:2015-07-14 01:12:39
【问题描述】:

我正在使用这些配置监控用户位置:

    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
    locationManager.requestAlwaysAuthorization()
    locationManager.startMonitoringSignificantLocationChanges()

我有一个开关,允许用户手动输入地址或允许 GPS 跟踪。当从手动切换到 GPS 位置时,我想踢CLLocationManager 以更新用户位置并调用didUpdateLocations 事件。否则,它只是等待并等待更新。是否可以手动触发一次更新?

【问题讨论】:

    标签: ios swift ios8 core-location


    【解决方案1】:

    来自文档:

    开始更新位置

    连续多次调用此方法不会自动生成新事件。但是,在这两者之间调用 stopUpdatingLocation 确实会在您下次调用此方法时发送一个新的初始事件。

    这样您就可以停止并立即重新启动位置更新以手动触发它!

    【讨论】:

      【解决方案2】:

      是否可以手动触发一次更新

      是的,但不是startMonitoringSignificantLocationChanges。您需要致电startUpdatingLocation。请注意,即便如此,在您获得单个可用更新之前,可能需要多次调用您的代理,并且需要几秒钟。

      我所做的 (example code here) 是同时观看 horizontalAccuracytimestamp,并在我要么获得足够准确的位置时停止时间过长。

      【讨论】:

        【解决方案3】:

        当您想要开始扫描更新时启动它,而不是当您想要一个即时位置时启动它。

        如果您想要一个即时位置,请通过manager.location 请求它。如果响应为nil,则当前没有可用的位置,您需要等待。如果返回位置,您可以检查timestamp 以确定您是否可以使用它。

        【讨论】:

          猜你喜欢
          • 2017-10-03
          • 2015-07-31
          • 2014-05-28
          • 1970-01-01
          • 1970-01-01
          • 2017-12-10
          • 1970-01-01
          • 2021-03-01
          • 1970-01-01
          相关资源
          最近更新 更多