据我所知,在大多数情况下,在{1}}上都会在init上调用两次CLLocationManager。
这是有道理的,即使它在两种情况下都返回相同的结果(例如:因为模拟位置总是返回相同的坐标和精度)。
这是我的启动过程中的日志。 didUpdateToLocation调用两次,两次oldLocation都是nil:
// Setup code:
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.distanceFilter = 100.0
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
// Log Output:
locationManager didUpdateToLocation
old: nil
new: <+22.28468100,+114.15817700> +/- 5.00m (speed -1.00 mps / course -1.00) @ 6/25/15, 3:21:57 PM Indochina Time
locationManager didUpdateToLocation
old: nil
new: <+22.28468100,+114.15817700> +/- 5.00m (speed -1.00 mps / course -1.00) @ 6/25/15, 3:22:01 PM Indochina Time
没有意义的是oldLocation
在这些情况下总是为零。我必须提供一个外部变量,我调用actualOldLocation
来跟踪更新之间距离的变化。我做错了导致这个值为零吗?
答案 0 :(得分:1)
您定位的iOS是什么? didUpdateToLocation已从iOS 6.0弃用,不确定它现在是否完全正常运行。