2013-08-17 1 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); 
} 

Lorsque j'utilise la coordonnée manuscrite, le reverseGeocoding a échoué. mais quand j'utilise le - coordonnée obtenu de (vide) gestionnaire de locationManager: (CLLocationManager *) didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation, a réussi. Pourquoi?ios reverseGeocoder a échoué lorsque j'ai corrigé les coordonnées?

Répondre

1

Quand je laissai tomber votre code dans un projet de test, cela a fonctionné parfaitement bien pour moi:

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 

Voici ce que je pense qui va mal. Vous utilisez ARC et n'enregistrez pas votre "reverseGeocoder" partout (comme dans un ivar ou une propriété), donc dès que la fonction où vous avez créé "reverseGeocoder" se termine, ARC le libère.

Quelques autres:

S'il y a un paramètre d'erreur à votre disposition dans les méthodes de délégué, vous devez utiliser d'entre eux. Comme ceci:

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

Enfin & le plus important, « MKReverseGeocoder » a été dépréciées depuis iOS 5. Il y a une bonne chance, il disparaîtra dans les prochaines versions d'iOS. Vous devriez essayer de trouver un remplacement à utiliser pour le géocodage inverse.

Questions connexes