核心位置无法在viewDidLoad中获取数据

时间:2014-09-15 19:21:31

标签: ios core-location cllocationmanager

我编写了一个简单的iOS应用程序来检索位置信息,然后使用该位置来请求Yahoo Weather。

问题是即使我在viewDidLoad中调用Core Location,它也不会立即给我结果。

那为什么我不能获得位置信息?

如何在viewDidLoad中获取位置信息?

伪代码目前是这样的:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.locManager = [[CLLocationManager alloc] init];
    self.locManager.delegate = self;

    self.locManager.desiredAccuracy = kCLLocationAccuracyBest;
    self.locManager.distanceFilter = 100;
    [self.locManager startUpdatingLocation];

    //won't get the current location right now, so the output will be null
    NSLog(@"Current Location Longitude: %@", self.longitudeString);
    NSLog(@"Current Location Latitude: %@", self.latitudeString);
}

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *newLocation = [locations lastObject];
    self.longitudeString = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
    self.latitudeString = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}

1 个答案:

答案 0 :(得分:2)

不会像您期望的那样立即提供位置更新,您需要等待几秒钟(2-3或更多)才能获得精确的位置更新。如果你想在viewDidLoad中有位置数据,那么你应该在调用ViewController之前初始化你的位置管理器(并调用startUpdatingLocation)(从那时起,不能保证你在viewDidLoad中有位置数据)。