Навигация пользователя к местоположению с помощью приложения карт - PullRequest
1 голос
/ 07 июля 2011

У меня есть карта с множеством аннотаций. Когда пользователь нажимает на аннотацию, он переносит их на страницу с подробной информацией о произведении искусства и кнопкой «Проложить маршрут до этого места». Вот что я пытаюсь решить. У моего просмотра карты, на котором я только что находился, было текущее местоположение пользователя, которое мне нужно для отправной точки в URL-адресе для отправки в приложение карт. Будет ли лучше передать самую последнюю координату userLocation из mapview на следующую страницу, чтобы я мог использовать ее, когда пользователю нужны указания, или мне следует запустить новый CLLocationManager на следующей странице, чтобы просто определить местоположение пользователей. Кроме того, я попробовал последнее и не смог получить местоположение пользователя от менеджера. Все, что я сделал, это объявил менеджера в интерфейсе:

CLLocationManager *manager;

"свойство" это:

@property (nonatomic, retain) CLLocationManager *manager;

"синтезировать" это:

@synthesize manager;

сделать это в viewDidLoad:

 [manager startUpdatingLocation];

и затем сделайте это в методе "навигации" IBAction:

-(IBAction)navigate; {
    CLLocationCoordinate2D start = manager.location.coordinate;
    CLLocationCoordinate2D end = {[selectedArtPiece.latitude doubleValue], [selectedArtPiece.longitude doubleValue]};
    [[UIApplication sharedApplication] openURL:[[NSURL alloc] initWithString: [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f", start.latitude, start.longitude, end.latitude, end.longitude ]]];

}

"конец" в конечном итоге равен 0,0, поэтому я должен что-то упустить.

Итак, мои вопросы:

1. Что я делаю не так с CLLocationManager.

2. Предполагая, что я даже заставлю это работать, вы бы порекомендовали сделать это, чтобы получить текущее местоположение, или я должен отправить немного устаревшее (может быть) местоположение пользователя из предыдущего вида карты, чтобы использовать его для указаний? Стоит ли батарея и время, чтобы запустить CLLocationManager только ради получения координат для направлений?

Спасибо за любые отзывы!

1 Ответ

0 голосов
/ 07 июля 2011

Чтобы использовать CLLocationManager, вам потребуется alloc + init, установить его делегат, затем вызвать startUpdatingLocation и прочитать текущее местоположение (если оно найдено) в методе делегата locationManager:didUpdateToLocation:fromLocation:.

Однако в вашем случае я бы не стал пытаться получить текущее местоположение снова в режиме реального времени. Время между нажатием пользователем аннотации и появлением страницы с подробностями не займет много времени, чтобы создать существенную разницу. Вместо этого я бы добавил свойство стартовой локации на страницу сведений и установил его в пользовательском расположении вида карты перед представлением страницы сведений.

Таким образом, пользователю не нужно (возможно) ждать, пока не будет найдено новое, более точное текущее местоположение, и оно фактически показывает направления от того, что пользователь увидел в качестве своего текущего местоположения, прежде чем нажать аннотацию.

...