web-dev-qa-db-ja.com

CLLocationCoordinate2Dが空でないことを確認する方法は?

CLLocationCoordinate2Dが空でないことを確認する方法は?

59
Shmidt

非常に古いトピックですが、私は今それを必要としており、クラース・ヘルマンズの助けを借りて、小さな変更を加えて問題を修正しました。

の代わりに

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

私は使わなければなりませんでした

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

たぶんこれは他の誰かを助けるでしょう:)

編集:

指摘したように、Klaasの投稿で説明されている初期化はまだ必要です。

136

CLLocation.hで宣言されている定数kCLLocationCoordinate2DInvalidを使用できます。

で変数を初期化します

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")
}
56
Klaas
if ( coordinate.latitude != 0 && coordinate.longitude != 0 )
{
    ....
}
9
joerick
func isCoordinateValid(latitude: CLLocationDegrees, longitude: CLLocationDegrees) -> Bool {
    guard latitude != 0, longitude != 0, CLLocationCoordinate2DIsValid(CLLocationCoordinate2D(latitude: latitude, longitude: longitude)) else {
        return false
    }
    return true
}
0
jawad