получение текущей широты и долготы

#iphone #ios #gps #cllocationmanager

#iPhone #iOS #gps #cllocationmanager

Вопрос:

Я хочу получить текущее местоположение, я вижу с помощью этого кода, но как я могу присвоить этой широте и долготе метку при нажатии кнопки?

 -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation   *)newLocation fromLocation:(CLLocation *)oldLocation {

    NSLog(@"latitudeAAAAA %f",newLocation.coordinate.latitude );
    NSLog(@"longitudeAAAA %f",newLocation.coordinate.longitude);
    [corelocation stopUpdatingLocation];
}
  

Ответ №1:

 label.text = [NSString stringWithFormat:@"%lf,%lf", newLocation.coordinate.latitude, newLocation.coordinate.longitude];
  

Ответ №2:

Вам нужно установить свой собственный класс в качестве делегата вашего CLLocationManager , а затем вызвать startUpdatingLocation (docs), чтобы он вызывал указанный вами метод. Обратный вызов произойдет в какой-то момент после того, как вы попросите его начать обновление местоположения, и будет поступать до тех пор, пока вы не попросите его остановиться. Вам нужно будет выяснить для вашего варианта использования, должен ли он запускаться сам по себе, но затем сохранять местоположение (или то, что вы хотите с ним сделать) только тогда, когда пользователь нажимает кнопку, или если обновления должны запускаться при нажатии пользователем (я не совсем уверен, чтовы имеете в виду из вашего вопроса).

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/doc/uid/TP40007125-CH3-SW2

Ответ №3:

В построителе интерфейса установите touchUpInside для события значение call - (IBAction)buttonClicked:(id)sender (или задайте действие программно), затем установите для кнопок делегирование self . При viewDidLoad настройке вашего locationManager :

 - (void)viewDidLoad {
    [super viewDidLoad];
    self.locationManager = [[[CLLocationManager alloc] init] autorelease];
    [locationManager setDelegate:self];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [locationManager setDistanceFilter:kCLDistanceFilterNone];
    [locationManager startUpdatingLocation];
}
  

Действие кнопки:

 - (IBAction)buttonClicked:(id)sender {
    myLabel.text = [NSString stringWithFormat:@"% .6f,% .6f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude];
    UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Button clicked" message:myLabel.text  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
    [alert show];

}
  

Методы делегирования диспетчера местоположений:

 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSDate* eventDate = newLocation.timestamp;
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
    if (abs(howRecent) < 5.0) {
        NSLog(@"New Latitude % .6f, Longitude % .6f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
    }
}