如何检查CLLocationCoordinate2D是否为空?

Shm*_*idt 59 cllocation ios

如何检查CLLocationCoordinate2D是否为空?

Ric*_*nde 136

这是一个非常古老的话题,但我现在需要它,我在Klaas Hermanns的帮助下解决了我的问题,并做了一些微小的改动.

代替

if( myCoordinate ==  kCLLocationCoordinate2DInvalid ) {
  NSLog(@"Coordinate invalid");
}
Run Code Online (Sandbox Code Playgroud)

我不得不使用

if (CLLocationCoordinate2DIsValid(myCoordinate)) {
  NSLog(@"Coordinate valid");
} else {
  NSLog(@"Coordinate invalid");
}
Run Code Online (Sandbox Code Playgroud)

也许这会帮助别人:)

编辑:

正如所指出的那样,Klaas所述的初始化仍然是必要的.

  • 为此,必须将坐标初始化为kCLLocationCoordinate2DInvalid,否则0,0坐标将有效. (8认同)
  • @malcolmhall (0,0) 坐标实际上是一个有效坐标。说它无效可能会误导一些开发人员。然而,它通常是由于一些错误导致 (0,0) 坐标的结果。例如,如果实例为零,[anNSNumber floatValue] 将返回 0。但是因为在 (0,0) 处没有任何兴趣,所以大多数程序员愿意将其标记为无效以识别这些错误。 (2认同)

Kla*_*aas 56

您可以使用CLLocation.h中声明的常量kCLLocationCoordinate2DInvalid

用.初始化变量

CLLocationCoordinate2D myCoordinate = kCLLocationCoordinate2DInvalid;
Run Code Online (Sandbox Code Playgroud)

然后检查:

if( myCoordinate ==  kCLLocationCoordinate2DInvalid ) {
  NSLog(@"Coordinate invalid");
}
Run Code Online (Sandbox Code Playgroud)

加成:

有时这似乎是一个更好的解决方案(正如Rick van der Linde在另一个答案中所提到的):

if (CLLocationCoordinate2DIsValid(myCoordinate)) {
    NSLog(@"Coordinate valid");
} else {
    NSLog(@"Coordinate invalid");
}
Run Code Online (Sandbox Code Playgroud)

Swift的补充:

您可以在Swift中执行相同的操作,如下所示:

let myCoordinate = kCLLocationCoordinate2DInvalid

if CLLocationCoordinate2DIsValid(myCoordinate) {
    println("Coordinate valid")
} else {
    println("Coordinate invalid")
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是接受的答案,因为必须防止0,0有效,才能初始化为kCLLocationCoordinate2DInvalid. (2认同)

joe*_*ick 9

if ( coordinate.latitude != 0 && coordinate.longitude != 0 )
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

  • 哈哈,点了.虽然它们应该是双重比较,所以理论上我们可以在我们错误地忘记它们存在之前将它们接近2 ^ -1074到零...... (8认同)