Получить координаты местоположения пользователя внутри didSelectRowAtIndexPath (для касания ячейки TableView) - PullRequest
1 голос
/ 16 февраля 2011

Вот код - он говорит сам за себя (см., В частности, @todo в коде):

// Handle taps of certain table rows
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    // Set up start location
    CLLocationCoordinate2D start;

    // Initialize the location manager, to get user location
    locationController = [[JJGCLController alloc] init];
    locationController.delegate = self;
    [locationController.locationManager startUpdatingLocation];

    // @todo - Get the latitude/longitude values back from my controller, and
    // set them as the start coordinates.
    //start.latitude = location.coordinate.latitude;
    //start.longitude = location.coordinate.latitude;

    CLLocationCoordinate2D destination;
    destination.latitude = (CLLocationDegrees)[pLatitude doubleValue];
    destination.longitude = (CLLocationDegrees)[pLongitude doubleValue];

    NSString *googleMapsURLString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f",
                                     start.latitude, start.longitude, destination.latitude, destination.longitude];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapsURLString]];
}

По сути, я пытаюсь настроить диспетчер / контроллер местоположения, чтобы получить местоположение пользователя, чтобы я мог настроить ссылку, которая откроется в приложении "Карты" с маршрутом от местоположения пользователя до пункта назначения (широта / долгота) от pLatitude и pLongitude соответственно).

Я следовал руководству Hello There: Core Location Tutorial, чтобы добавить свой собственный класс контроллера местоположения (JJGCLController), и в методе - (void)locationUpdate:(CLLocation *)location моего контроллера представления я могу видеть местоположение, но не могу получить координаты в методе didSelectRowAtIndexPath моего табличного представления.

По сути, мое приложение отображает адрес в каждой ячейке таблицы, и когда пользователь нажимает на адрес, я хочу, чтобы приложение «Карты» загрузилось, а затем появился маршрут от текущего местоположения пользователя до адреса.

1 Ответ

3 голосов
/ 16 февраля 2011

Между вызовом -startUpdatingLocation и получением доступа к данным о местоположении должен быть хотя бы небольшой промежуток времени.

Есть два способа добиться этого - вы можете либо позвонить на startUpdatingLocation гораздо раньше (например, при запуске приложения или когда появляется это конкретное представление), либо вы можете отложить отправку пользователя в приложение карт до тех пор, пока locationUpdate: вызывается, что может произойти через непредсказуемый промежуток времени. Ни один из способов не идеален.

...