получение текущей широты и долготы - PullRequest
1 голос
/ 30 сентября 2011

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

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

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

Ответы [ 3 ]

2 голосов
/ 30 сентября 2011
label.text = [NSString stringWithFormat:@"%lf,%lf", newLocation.coordinate.latitude, newLocation.coordinate.longitude];
1 голос
/ 30 сентября 2011

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

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

0 голосов
/ 30 сентября 2011

В конструкторе интерфейса установите для события touchUpInside значение - (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);
    }
}
...