2011-05-01 55 views
1

我嘗試捕捉經緯度值並將它們顯示在控制檯(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尋求幫助:)))

回答

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協議,即它應該是位置管理的委託。