2013-08-17 2 views
0
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(27.941761 , -82.171537); 

    MKReverseGeocoder *reverseGeocoder =[[MKReverseGeocoder alloc] initWithCoordinate:coordinate]; 
    NSLog(@"%g",coordinate.latitude); 
    NSLog(@"%g",coordinate.longitude); 
    reverseGeocoder.delegate = self; 
    [reverseGeocoder start]; 
//???????????????????????????????????????????????????????????????????????? 

} 

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error{ 
NSLog(@"MKReverseGeocoder has failed."); 
} 
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark   *)placemark{ 

NSLog(@"current place is :%@",placemark); 
} 

, когда я использую рукописную координату, обратное преобразование с ошибкой. но когда я использую координату, полученную из (void) locationManager: (CLLocationManager *) manager didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation, успешно. Зачем?ios reverseGeocoder не удалось, когда я зафиксировал координату?

ответ

1

Когда я бросил свой код в тестовый проект, он работал прекрасно для меня:

2013-08-16 23:45:55.966 TestMapApp[11261:a0b] 27.9418 
2013-08-16 23:45:55.967 TestMapApp[11261:a0b] -82.1715 
2013-08-16 23:45:57.831 TestMapApp[11261:a0b] current place is :6015 W Farkas And Turkey Creek Rd, Plant City, FL 33567, United States @ <+27.94176100,-82.17153700> +/- 0.00m 

Вот что я думаю, что это происходит не так. Вы используете ARC и не сохраняете свой «reverseGeocoder» в любом месте (например, в ivar или в качестве свойства), поэтому, как только функция, которую вы создали «reverseGeocoder», заканчивается, ARC выпускает ее.

пара другие вещи:

Если параметр ошибки доступны в методах делегата, вы должны использовать из них. Как это:

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error{ 
    NSLog(@"MKReverseGeocoder has failed with error %@.", [error localizedDescription]); 
} 

И наконец & самое главное, «MKReverseGeocoder» является устаревшим с прошивкой 5. Там хороший шанс, что он уйдет в будущих версиях IOS. Вы должны попытаться найти замену для использования для обратного геокодирования.