Méthodes CLRegion obsolètes – comment obtenir le rayon ?
-
21-12-2019 - |
Question
j'utilise le geocodeAddressString:completionHandler:
méthode, qui renvoie un tableau de CLPlacemarks.Je dois obtenir la latitude, la longitude, le nom mnémonique et le rayon.Bien qu’obtenir les 3 premiers soit facile :
double lat = placemark.location.coordinate.latitude;
double lng = placemark.location.coordinate.longitude;
NSString *name = [NSString stringWithFormat:@"%@", ABCreateStringWithAddressDictionary(placemark.addressDictionary, NO)]
Je ne sais pas comment obtenir le rayon maintenant, car placemark.region.radius
est obsolète.Avez-vous des idées sur quoi utiliser maintenant ?Je ne trouve rien d'assez intéressant dans la documentation.
La solution
La note de dépréciation est destinée radius
dans CLRegion
et il dit d'utiliser CLCircularRegion
plutôt.
Noter que CLCircularRegion
est une sous-classe de CLRegion
.
CLCircularRegion
a les mêmes propriétés que CLRegion
avait (y compris radius
).
Cela compte si toi sont ceux qui créent un CLRegion
avec l'intention d'utiliser son radius
propriété.
Cependant, ici, c'est le SDK lui-même (plus précisément le geocodeAddressString
méthode) qui doit s’en soucier et s’en occuper.
Dans iOS 7, cette méthode le gère en effet en renvoyant un CLCircularRegion
pour le repère region
propriété.
Essentiellement, vous n’avez rien à faire ou à modifier ici puisque les noms de propriété sont identiques.
Ce code fonctionnera d'iOS 4 à iOS 7 :
NSLog(@"radius=%f", placemark.region.radius);