我正在编写一个项目,我需要知道用户的确切位置。 (的LocationManager)
问题在于,例如地下(地铁),由于信号较弱,LocationManager无法确定用户的位置,因此它只返回缓存位置..
我现在做的是检查位置是否太旧,如果是,那么等待新的位置..
好的但是有一个问题..如果用户根本没有移动那么位置也不会得到更新,因为它只是一个缓存的位置..时间戳检查会说它太旧了..
我该如何解决?
答案 0 :(得分:0)
您可以通过timeStamp检查缓存位置,您可以在LocationManagerDidUpdateLocation中写入 e.g
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let newLocation = locations.first {
let age: TimeInterval = -newLocation.timestamp.timeIntervalSinceNow
if age > 120 {
return
}
// ignore old (cached) updates
if newLocation.horizontalAccuracy < 0 {
return
}
}
}