设备: iPhone 6s 16 GB iOS 9.1
我正在尝试将位置管理器应用从iOS 6.1更新到iOS 9.1。
LM设置如下:
locationManager = [ [ CLLocationManager alloc ] init ] ;
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters ;
[ self.locationManager requestWhenInUseAuthorization ] ;
[ self.locationManager startUpdatingLocation ] ;
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *newLocation = [locations lastObject];
NSLog( @“locations.count = %d”, locations.count ) ;
}
应用程序在设备上运行并更新位置(lat和long)但是 locations.count总是等于1.因此,我无法获得前一个位置来计算行进距离或速度。
答案 0 :(得分:0)
感谢您的回复。
IOS 9不使用:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
//Code based on your requirements
}
IOS 9回复此错误消息:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Delegate must respond to locationManager:didUpdateLocations:'
新代表是:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
// some code.
}
locations数组包含以前位置的列表。 (当位置管理器在后台运行时,它与节省能量有关。)数组中的最后一项是当前位置。倒数第二个项目是之前的位置。
我的问题是Delegate只返回最后一个数组项。现在的位置。不是以前的位置。
再次感谢, SXB