текущее местоположение из CoreLocation - PullRequest
0 голосов
/ 05 апреля 2010

У меня есть приложение, которое запускает приложение Google Map. Код:

UIApplication *app = [UIApplication sharedApplication]; 
[app openURL:[[NSURL alloc] initWithString: @"http://maps.google.com/maps?daddr=Obere+Laube,+Konstanz,+Germany&saddr="]]; 

saddr = должно быть текущим местоположением. Я получаю текущее местоположение с

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

NSLog(@"%f,%f", [newLocation coordinate]);

В журнале отображаются правильные координаты, такие как

2010-04-05 15:33:25.436 deBordeaux[60657:207] 37.331689,-122.030731

Я не нашел правильный способ передачи координат в строку URL. Кто-нибудь может дать мне подсказку с практическими рекомендациями?


Хммм, у меня была запись в моем .h

В моем методе я использую "newLocation" вместо вашего "местоположения". Код:

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

NSLog(@"%f,%f", [newLocation coordinate]);
NSLog(@"%f", [newLocation coordinate].latitude);

storedLocation = [newLocation coordinate];

NSLog(@"Standort neu String: %@", storedLocation);

В результате я получаю:

  • 2010-04-05 20: 28: 44,397 де Бордо [64179: 207] 37,331689, -122,030731
  • 2010-04-05 20: 28: 44,398 де Бордо [64179: 207] 37,331689
  • Программа получила сигнал: «EXC_BAD_ACCESS».

1 Ответ

0 голосов
/ 05 апреля 2010

Вы не должны использовать addr параметр URL, но ll .

Вы должны передать широту и долготу как

http://maps.google.com/maps?daddr=Obere+Laube,+Konstanz,+Germany&ll=37.331689,-122.030731

и вы можете получить их из CLocation через

[location coordinate].latitude
[location coordinate].longitude

EDIT: Прежде всего вы можете напрямую сохранить объект типа CLLocationCoordinate2D, а затем преобразовать его в строку NSString, когда вам нужно:

// in your .h
CLLocationCoordinate2D storedLocation;

// in your method
storedLocation = [location coordinate];

// when you want to ask google maps
[NSString stringWithFormat:@"http://maps.google.com/maps?daddr=Obere+Laube,+Konstanz,+Germany&ll=%f,%f", storedLocation.latitude, storedLocation.longitude];

Помните, что CLLocationCoordinate2D определяется как

typedef struct {
   CLLocationDegrees latitude;
   CLLocationDegrees longitude;
} CLLocationCoordinate2D;

где у вас есть typedef double CLLocationDegrees

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...