Cllocation и MkReversegeCoder
-
26-09-2019 - |
Вопрос
Я пытаюсь отведать название города с Cllocation и MkReversegeCoder. В моем методе ViewDidload I Isstance CllocationManager:
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";
Приложение работает только в первый раз, когда я получаю свою ценность. во второй раз сбой приложения. Я думаю, что это потому, что Geocoder начинается, и я думаю, что у меня должен быть один и только один бегущий потенциал. (Но я действительно не стесняюсь этого ...). Каким образом я могу управлять геокодером?
Я вижу, что я могу инасим MkReversegeCoder в моей ViewDidload, используя CllocationCoordinate2D, но ... в каком способе я могу решить новое слово. Содействовать?
Я частично разрешил объявление Geocoder в качестве переменной класса и проверять
if (self.geocoder != nil) {
[geocoder release];
}
Но .... если в моем
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark
*)placemark
или в моем
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailedWithError:(@NSError
*)error
Я отменил или отменить свой объект? Я чувствую себя так глупо: D
Решение
Не создавайте обратный геокодер в виде локальной переменной.
Посмотрите на примере MkReversegeCoder в Текущий адрес Пример приложения предоставляется Apple. Смотрите mapviewcontroller.h и mapviewcontroller.m.
Следуйте по одному рисунку в вашем коде.