Comment vérifier que CLLocationCoordinate2D n'est pas vide?
Pour que cela fonctionne, les coordonnées doivent être initialisées à kCLLocationCoordinate2DInvalid sinon les coordonnées 0,0 seront valides.
Comment vérifier que CLLocationCoordinate2D n'est pas vide?
Un sujet très ancien, mais j'en avais besoin maintenant et j'ai résolu mon problème avec l'aide de Klaas Hermanns, avec un petit changement.
Au lieu de
if( myCoordinate == kCLLocationCoordinate2DInvalid ) {
NSLog(@"Coordonnée invalide");
}
J'ai dû utiliser
if (CLLocationCoordinate2DIsValid(myCoordinate)) {
NSLog("Coordonnée valide");
} else {
NSLog("Coordonnée invalide");
}
Peut-être que cela aidera quelqu'un d'autre :)
Éditer :
Comme cela a été souligné, l'initialisation, comme expliqué dans le message de Klaas, est toujours nécessaire.
Pour que cela fonctionne, les coordonnées doivent être initialisées à kCLLocationCoordinate2DInvalid sinon les coordonnées 0,0 seront valides.
@malcolmhall les coordonnées (0,0) sont en fait des coordonnées valides. Dire qu'elles sont invalides pourrait induire en erreur certains développeurs. Cependant, cela se produit généralement en raison d'une erreur conduisant aux coordonnées (0,0). Par exemple, [anNSNumber floatValue] renverra 0 si l'instance est nulle. Mais comme il n'y a rien d'intéressant à (0,0), la plupart des programmeurs sont prêts à le marquer comme invalide pour identifier ces erreurs.
La fonction tient-elle également compte du fait que la latitude doit être un nombre compris entre -90 et 90 et la longitude entre -180 et 180?
Vous pouvez utiliser la constante kCLLocationCoordinate2DInvalid déclarée dans CLLocation.h
Initialisez votre variable avec
CLLocationCoordinate2D myCoordinate = kCLLocationCoordinate2DInvalid;
et vérifiez-la ultérieurement avec:
if( myCoordinate == kCLLocationCoordinate2DInvalid ) {
NSLog(@"Coordonnée invalide");
}
Ajout:
Parfois, cela semble être une solution encore meilleure (comme mentionné par Rick van der Linde dans une autre réponse):
if (CLLocationCoordinate2DIsValid(myCoordinate)) {
NSLog(@"Coordonnée valide");
} else {
NSLog(@"Coordonnée invalide");
}
Ajout pour Swift:
Vous pouvez faire de même en Swift comme illustré ici:
let myCoordinate = kCLLocationCoordinate2DInvalid
if CLLocationCoordinate2DIsValid(myCoordinate) {
println("Coordonnée valide")
} else {
println("Coordonnée invalide")
}
Haha, point pris. Bien qu'ils devraient être des doubles comparaisons, donc en théorie nous pourrions nous rapprocher à 2^-1074 de zéro avant d'oublier par erreur qu'ils existent...
La latitude et la longitude sont des doubles
. Ne jamais évaluer un double
avec une comparaison d'égalité.
Il n'y a rien de mal à vérifier si c'est zéro, car la question demande comment vérifier s'il est vide.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.