Как проверить, что CLLocationCoordinate2D не пуст?


Как это проверить CLLocationCoordinate2D не пустой?

3 55

3 ответа:

очень старая тема, но мне это было нужно сейчас, и я исправил свою проблему с помощью Klaas Hermanns, с небольшим изменением.

вместо

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

Я должен использовать

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

может быть, это поможет кому-то еще :)

Edit:

Как указывалось, инициализация, как описано в Klaas его пост, по-прежнему необходима.

вы можете использовать константу kCLLocationCoordinate2DInvalid, объявленную в CLLocation.h

инициализируйте переменную с помощью

CLLocationCoordinate2D myCoordinate = kCLLocationCoordinate2DInvalid;

и позже проверить его с:

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

дополнение:

иногда это кажется еще лучшим решением (как упоминал Рик ван дер Линде в другом ответе):

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

дополнение для Swift:

вы можете сделать то же самое аналогично в Swift, как показано на рисунке здесь:

let myCoordinate = kCLLocationCoordinate2DInvalid

if CLLocationCoordinate2DIsValid(myCoordinate) {
    println("Coordinate valid")
} else {
    println("Coordinate invalid")
}
if ( coordinate.latitude != 0 && coordinate.longitude != 0 )
{
    ....
}