确定位置是否无效/缓存/(例如地下)

时间:2018-02-19 06:45:09

标签: ios swift core-location

我正在编写一个项目,我需要知道用户的确切位置。 (的LocationManager)

问题在于,例如地下(地铁),由于信号较弱,LocationManager无法确定用户的位置,因此它只返回缓存位置..

我现在做的是检查位置是否太旧,如果是,那么等待新的位置..

好的但是有一个问题..如果用户根本没有移动那么位置也不会得到更新,因为它只是一个缓存的位置..时间戳检查会说它太旧了..

我该如何解决?

1 个答案:

答案 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
     }
    }
  }