繁体   English   中英

如何手动触发CLLocationManager更新?

[英]How to manually trigger CLLocationManager update?

我正在使用以下配置监视用户位置:

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

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

一次可能手动触发更新

是的,但不是带有startMonitoringSignificantLocationChanges 您将需要调用startUpdatingLocation 请注意,即使这样,在获得单个可用更新之前,可能还需要多次致电您的委托人和几秒钟。

我做什么( 例如代码在这里 )是看双方horizontalAccuracytimestamp ,当我要么得到一个足够精确的位置太多时间流逝停止。

当您要开始扫描更新时启动它,但是当您想要直接位置时则不启动它。

如果要立即定位,请使用manager.location请求。 如果响应nil则当前没有可用位置,您需要等待。 如果返回了位置,则可以检查timestamp以确定是否可以使用它。

从文档:

startUpdatingLocation

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM