Клокация и Макреверсгеокодер - PullRequest
3 голосов
/ 14 апреля 2010

Я пытаюсь получить название города с помощью cllocation и mkreversegeocoder. в моем методе viewdidload я искажаю управление размещением:

self.locManager = [[CLLocationManager alloc] init];
locManager.delegate = self;
locManager.desiredAccuracy = kCLLocationAccuracyBest;
[locManager startUpdatingLocation];

и после:

- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation 
*)newLocation
fromLocation:(CLLocation *)oldLocation {
//some code to retrieve my information

MKReverseGeocoder *geoCoder = [[MKReverseGeocoder alloc]     
initWithCoordinate:newLocation.coordinate ];
geoCoder.delegate = self;
[geoCoder start];
}

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark  
*)placemark
{
MKPlacemark *myPlacemark = placemark;
citta.text = [placemark locality];
}

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error{
citta.text =@ "Unknow";

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

Я вижу, что могу использовать mkreversegeocoder в моей viewdidload, используя cllocationcoordinate2d, но ... каким образом я могу получить newlocation.coordinate?

Я частично разрешил объявление геокодера переменной класса и проверку

if (self.geocoder != nil) {
   [geocoder release];
}

но .... если по моему

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark  
*)placemark

или по моему

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailedWithError:(@NSError 
*)error

я отпускаю или отменяю свой объект? Я чувствую себя так глупо: D

1 Ответ

7 голосов
/ 14 апреля 2010

Не создавайте обратный геокодер как локальную переменную.

Посмотрите на пример MKReverseGeocoder в примере приложения CurrentAddress , предоставленного Apple.См. MapViewController.h и MapViewController.m.

Следуйте той же схеме в вашем коде.

...