简体   繁体   中英

Getting Longitude and Latitude Values

I am trying to connect to GPS from my code. I am doing so according to this tutorial .

- (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];
  }

The above code is placed in a view controller called GetMyLocationViewController , and I have another view controller called MainScreenViewController .

When the screen loads, the MainScreenViewController gets loaded, and I will need the GPS location to continue operations with this screen.

In the ViewDidLoad method of MainScreenViewController I wrote the following;

- (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

 }

When the above code gets executed, the viewDidLoad method of MainScreenViewController gets executed, but not the locationUpdate method. The only way I could get the values of longitude and latitude is by the execution of locationUpdate method. So how can I get these values?

Do you tested in a device? xcode before the version 4.2 dont have a GPS simulator, because of that the method locationUpdate never call.

- (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];
    }
}

Are you sure you are loading your GetMyLocationViewController ? Your code only shows loading the MainScreenViewController , which, in its -viewDidLoad method, loads itself again, which would cause an infinite loop of loading and pushing MainScreenViewControllers .

UPDATE: That CoreLocationController class in the tutorial seems unnecessary. Rather that using it, make CLLocationManager a property of your GetMyLocationViewController. Make GetMyLocationViewController's -viewDidLoad method look like this:

-(void)viewDidLoad {
     [super viewDidLoad];

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

don't forget to import the CoreLocation library and implement the delegate methods.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM