经度/纬度值不正确

时间:2011-05-01 22:30:01

标签: ios core-location

我尝试捕捉经度和纬度值并暂时在控制台(NSLog)中显示它们,我已经在viewWillAppear方法中使用了相应的代码,无论如何,这不是什么大不了的事,我的问题是当我第一次显示视图时,我的控制台告诉我:

latitude: 0.000000
longitude:0.000000

第二次它告诉我:

latitude : 134217731.444448
longitude : 0.700000

第三次:

latitude : 134217731.444448
longitude : 0.700000

n时间:

 latitude : 134217731.444448
    longitude : 0.700000

这是viewWillAppear中的代码(我确定它的逻辑非常正确,我在等待你的澄清):

-(void)viewWillAppear:(BOOL)animated
{   
    // locationManager update as location
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startUpdatingLocation];
    CLLocation *location = [locationManager location];
    // Configure the new event with information from the location
    CLLocationCoordinate2D coordinate = [location coordinate];
    NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; 
    NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude];

    NSLog(@"Latitude : %@", latitude); 
    NSLog(@"Longitude : %@",longitude);

}

请注意,我在iPhone模拟器上工作,thx求助:)))

1 个答案:

答案 0 :(得分:2)

你不应该在这里检查坐标。

在同一个类中实现locationManager:didUpdateToLocation:fromLocation:方法并检查此方法中的位置:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    CLLocationCoordinate2D coordinate = [newLocation coordinate];
    NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; 
    NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude];

    NSLog(@"Latitude : %@", latitude); 
    NSLog(@"Longitude : %@",longitude);

}

您当前的课程应该实施CLLocationManagerDelegate协议,即它应该是位置管理员的代表。