我正在使用以下配置监控用户位置:
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoringSignificantLocationChanges()
我有一个开关,允许用户手动输入地址或允许GPS跟踪。从手动切换到GPS位置时,我想踢CLLocationManager
更新用户位置并致电didUpdateLocations
活动。否则,它只是等待并等待更新时的感觉。是否可以手动触发一次更新?
答案 0 :(得分:0)
手动触发一次更新
是的,但不是startMonitoringSignificantLocationChanges
。您需要致电startUpdatingLocation
。请注意,即使这样,在获得单个可用更新之前,可能需要多次调用您的委托,并且几秒钟。
我所做的(example code here)是同时观看horizontalAccuracy
和timestamp
,当我 获得足够准确的位置时停止或时间太长了。
答案 1 :(得分:0)
当您想要开始扫描更新时启动它,但不希望立即定位时启动它。
如果您想要一个直接的位置,请使用manager.location
进行申请。如果响应为nil
,则当前没有可用的位置,您需要等待。如果返回某个位置,您可以查看timestamp
以确定是否可以使用它。
答案 2 :(得分:0)
来自文档:
startUpdatingLocation
连续多次调用此方法不会自动导致生成新事件。但是,在两者之间调用stopUpdatingLocation会导致在下次调用此方法时发送新的初始事件。
因此您可以停止并立即重新启动位置更新以手动触发它!