¿Cómo comprobar que CLLocationCoordinate2D no está vacío?


Cómo comprobar que CLLocationCoordinate2D no está vacío?

Author: Shmidt, 2011-11-25

3 answers

Un tema muy antiguo, pero lo necesitaba ahora y arreglé mi problema con la ayuda de Klaas Hermanns, con un pequeño cambio.

En lugar de

if( myCoordinate ==  kCLLocationCoordinate2DInvalid ) {
  NSLog(@"Coordinate invalid");
}

, tuve que usar

if (CLLocationCoordinate2DIsValid(myCoordinate)) {
  NSLog(@"Coordinate valid");
} else {
  NSLog(@"Coordinate invalid");
}

Tal vez esto ayudará a alguien más:)

Editar:

Como se señaló, la inicialización, como se cubre en Klaas su post, todavía es necesaria.

 131
Author: Rick van der Linde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-06 09:10:44

Puede usar la constante kCLLocationCoordinate2DInvalid declarada en CLLocation.h

Inicializa tu variable con

CLLocationCoordinate2D myCoordinate = kCLLocationCoordinate2DInvalid;

Y luego compruébalo con:

if( myCoordinate ==  kCLLocationCoordinate2DInvalid ) {
  NSLog(@"Coordinate invalid");
}

Adición:

A veces esto parece ser una solución aún mejor (como lo mencionó Rick van der Linde en otra respuesta):

if (CLLocationCoordinate2DIsValid(myCoordinate)) {
    NSLog(@"Coordinate valid");
} else {
    NSLog(@"Coordinate invalid");
}

Adición para Swift:

Puedes hacer lo mismo en Swift como se muestra aquí:

let myCoordinate = kCLLocationCoordinate2DInvalid

if CLLocationCoordinate2DIsValid(myCoordinate) {
    println("Coordinate valid")
} else {
    println("Coordinate invalid")
}
 56
Author: Klaas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-12 14:53:07
if ( coordinate.latitude != 0 && coordinate.longitude != 0 )
{
    ....
}
 10
Author: joerick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-25 18:44:45