我正在开发一款iPhone应用程序,它是一个位置感知应用程序。 目前该应用程序除了缓存之前的位置外,其他工作都正常。 第一次启动应用程序时,位置管理器会获取当前位置,然后根据当前位置显示附近的事物。
但是从下一次开始,它将使用先前获取的位置,并且直到我重新启动手机之前,它都会获取相同的位置。所以到这一点上,我已经清楚了位置管理器缓存了位置。
所以我的问题是如何删除此缓存并强制位置管理器获取新位置。谢谢。
我正在开发一款iPhone应用程序,它是一个位置感知应用程序。 目前该应用程序除了缓存之前的位置外,其他工作都正常。 第一次启动应用程序时,位置管理器会获取当前位置,然后根据当前位置显示附近的事物。
但是从下一次开始,它将使用先前获取的位置,并且直到我重新启动手机之前,它都会获取相同的位置。所以到这一点上,我已经清楚了位置管理器缓存了位置。
所以我的问题是如何删除此缓存并强制位置管理器获取新位置。谢谢。
实际上,我认为你无法这样做:这取决于你(在你的CLLocationManagerDelegate
实例中)根据时间戳过滤接收到的位置(以确保你处理的位置是最新的,而不是缓存的位置)。
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
NSDate *eventDate = newLocation.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
//这个事件是否足够新鲜和准确?
if (abs(howRecent) < SECS_OLD_MAX) {
//开始处理它!
}
....
....