【发布时间】:2009-12-14 07:54:47
【问题描述】:
我使用 CLLoction 管理器来获取位置。但是当我启动我的位置时,它会为我提供以前存储在设备中的旧位置。我想为此重置位置,我在第一次启动应用程序时使用了标志,我使用了新位置和调用 stopupdateinglocation 和 startupdatinglocation 方法。但是 oldlocation 没有改变它显示旧位置。
【问题讨论】:
我使用 CLLoction 管理器来获取位置。但是当我启动我的位置时,它会为我提供以前存储在设备中的旧位置。我想为此重置位置,我在第一次启动应用程序时使用了标志,我使用了新位置和调用 stopupdateinglocation 和 startupdatinglocation 方法。但是 oldlocation 没有改变它显示旧位置。
【问题讨论】:
每个CLLocation 都有一个timestamp 属性,您可以使用它来过滤所有对于您的使用而言太旧的位置更新。
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSTimeInterval age = [newLocation.timestamp timeIntervalSinceNow];
if(age < SOME_CONSTANT_IN_SECONDS)
{
//Use location
}
}
【讨论】:
您无法清除旧位置,但您可以检查 HorizontalAccuracy 以了解这是一个好的位置(当前)还是旧的和不相关的位置。
【讨论】: