значения долготы / широты не верны - PullRequest
1 голос
/ 02 мая 2011

Я пытаюсь поймать значения долготы и широты и на данный момент отобразить их в консоли (NSLog), я вставил соответствующий код в метод viewWillAppear, в любом случае, это не имеет большого значения, моя проблема когда я показываю вид в первый раз, моя консоль показывает мне, что:

latitude: 0.000000
longitude:0.000000

и второй раз он показывает мне, что:

latitude : 134217731.444448
longitude : 0.700000

третий раз:

latitude : 134217731.444448
longitude : 0.700000

время:

 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, спасибо за помощь:)))

1 Ответ

2 голосов
/ 02 мая 2011

Вы не должны проверять координаты здесь.

Реализуйте метод 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 протокол, т. е. он должен быть делегатом менеджера местоположения.

...