iOS 9位置管理器不会返回旧位置

时间:2015-12-11 20:49:40

标签: ios9 locationmanager

设备: 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.因此,我无法获得前一个位置来计算行进距离或速度。

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