[英]How to manually trigger CLLocationManager update?
我正在使用以下配置监视用户位置:
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoringSignificantLocationChanges()
我有一个开关,允许用户手动输入地址或进行GPS跟踪。 从手动位置切换到GPS位置时,我想踢CLLocationManager
来更新用户位置并调用didUpdateLocations
事件。 否则,它只是等待并等待更新。 可以一次手动触发更新吗?
一次可能手动触发更新
是的,但不是带有startMonitoringSignificantLocationChanges
。 您将需要调用startUpdatingLocation
。 请注意,即使这样,在获得单个可用更新之前,可能还需要多次致电您的委托人和几秒钟。
我做什么( 例如代码在这里 )是看双方horizontalAccuracy
和timestamp
,当我要么得到一个足够精确的位置或太多时间流逝停止。
当您要开始扫描更新时启动它,但是当您想要直接位置时则不启动它。
如果要立即定位,请使用manager.location
请求。 如果响应nil
则当前没有可用位置,您需要等待。 如果返回了位置,则可以检查timestamp
以确定是否可以使用它。
从文档:
startUpdatingLocation
连续多次调用此方法不会自动导致生成新事件。 但是,在两者之间调用stopUpdatingLocation确实会导致下次调用此方法时发送新的初始事件。
因此您可以停止并立即重新启动位置更新以手动触发它!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.