Получение значений долготы и широты - PullRequest
1 голос
/ 24 октября 2011

Я пытаюсь подключиться к GPS из моего кода.Я делаю это согласно этому уроку .

- (void)viewDidLoad {
    [super viewDidLoad];

    CLController = [[CoreLocationController alloc] init];
    CLController.delegate = self;
    [CLController.locMgr startUpdatingLocation];
 }

- (void)locationUpdate:(CLLocation *)location {
    locLabel.text = [location description];
  }

- (void)locationError:(NSError *)error {
    locLabel.text = [error description];
  }

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
  }

Приведенный выше код помещается в контроллер вида с именем GetMyLocationViewController, и у меня есть другой контроллер вида с именем MainScreenViewController.

Когда экран загружается, MainScreenViewController получаетзагружен, и мне потребуется местоположение GPS для продолжения операций с этим экраном.

В методе ViewDidLoad из MainScreenViewController я написал следующее:

- (void)viewDidLoad {
    [super viewDidLoad];

    GetMyLocationViewController *getMyLocationViewController = [[GetMyLocationViewController alloc]initwithXib:nil bundle:nil];

    [self.navigationController pushViewController:getMyLocationViewController Animation:YES];
    // AND THEN I NEED TO ACCESS THE LONGITUDE AND LATITUDE VALUES

 }

Когда приведен код вышевыполняется, viewDidLoad метод MainScreenViewController выполняется, но не locationUpdate метод.Единственный способ получить значения longitude и latitude - это выполнить метод locationUpdate.Так как я могу получить эти значения?

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

Вы уверены, что загружаете свой GetMyLocationViewController? Ваш код показывает только загрузку MainScreenViewController, которая в методе -viewDidLoad загружает себя снова, что приведет к бесконечному циклу загрузки и нажатия MainScreenViewControllers.

ОБНОВЛЕНИЕ: этот класс CoreLocationController в руководстве кажется ненужным. Вместо этого используйте CLLocationManager как свойство вашего GetMyLocationViewController. Сделайте так, чтобы метод -viewDidLoad в GetMyLocationViewController выглядел следующим образом:

-(void)viewDidLoad {
     [super viewDidLoad];

     self.locationManager = [[CLLocationManager alloc] init];
     self.locationManager.delegate = self;
     [self.locationManager startUpdatingLocation];
}

не забудьте импортировать библиотеку CoreLocation и реализовать методы делегата.

0 голосов
/ 24 октября 2011

Вы тестировали в устройстве?xcode до версии 4.2 не имеет симулятора GPS, поэтому метод locationUpdate никогда не вызывается.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) {  // Check if the class assigning itself as the delegate conforms to our protocol.  If not, the message will go nowhere.  Not good.
        [self.delegate locationUpdate:newLocation];
    }
}
...