1

_mapView.userLocation.location.coordinate.latitude が 0 に等しいかどうかを確認するにはどうすればよいですか?

Latitude は double のタイプですtypedef double CLLocationDegrees;

0、-0.000000、0.000000、0.00 と比較してみましたが、うまくいきませんでした。

このような文字列に変換してみました

NSLog(@" lat %@", ([NSString stringWithFormat:@"%f", _mapView.userLocation.location.coordinate.latitude] == @"0.000000") ? @"yes" : @"NO" );
string  0.000000 
lat NO

しかし、これもうまくいきません。

ここで何が欠けていますか?

4

4 に答える 4

2

これはdoubleとして格納されるため、単純な数値比較で十分です。

if (coordinate.latitude == 0)

ただし、実際の場所を扱っている場合は、実際に0になる可能性は非常に低いため、最初に値を丸める必要があります。

コメントから、0,0の座標が場所のエラーを示していると想定しているように見えます。これはそうではありません。座標が無効な場合、horizontalAccuracyプロパティは負になります。これは、無効な座標をチェックする正しい方法です。

if (coordinate.horizontalAccuracy < 0)
于 2012-05-20T16:20:08.417 に答える
1

Swiftを使用しますが、カテゴリのobjective-cでも同じことができます:

extension CLLocation {

    func isZero() -> Bool {
        return self.coordinate.latitude == 0.0 && self.coordinate.longitude == 0.0
    }

}
于 2015-05-01T15:52:59.823 に答える
1

理由はわかりませんが、参照をフロートとして保存すると、期待どおりに機能します。

float lat = _mapView.userLocation.location.coordinate.latitude;
float lon = _mapView.userLocation.location.coordinate.longitude;  

if (lat == 0 || lon == 0) {
...
于 2012-05-20T18:13:13.660 に答える
0

上記の答えはうまくいくと思うかもしれませんが、緯度/経度をfloatとして保存することになり、通常の比較は期待どおりに機能しました。

于 2012-05-26T17:48:44.370 に答える