如何手动触发CLLocationManager更新?

时间:2015-05-04 15:18:24

标签: ios swift ios8 core-location

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

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

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

3 个答案:

答案 0 :(得分:0)

  

手动触发一次更新

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

我所做的(example code here)是同时观看horizontalAccuracytimestamp,当我 获得足够准确的位置时停止时间太长了。

答案 1 :(得分:0)

当您想要开始扫描更新时启动它,但不希望立即定位时启动它。

如果您想要一个直接的位置,请使用manager.location进行申请。如果响应为nil,则当前没有可用的位置,您需要等待。如果返回某个位置,您可以查看timestamp以确定是否可以使用它。

答案 2 :(得分:0)

来自文档:

startUpdatingLocation

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

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