2015-10-26 19 views
5

コード問題を再現する:CLLocation distanceFromLocation:iOS 9でゼロを返します。バグですか?

-(void)testDistance { 
    NSLog(@"Test distance..."); 

    CLLocation *location1 = [[CLLocation alloc] initWithLatitude:137.02954600000001 longitude:50.543728999999999]; 
    CLLocation *location2 = [[CLLocation alloc] initWithLatitude:55.79676300 longitude:49.10834400]; 

    CLLocationDistance distance = [location1 distanceFromLocation:location2]; 
    NSLog(@"Distance: %lf", distance); 
} 

のiOS 8.4出力:

距離:9021699.415204

のiOS 9.1出力:

距離:0.000000

location1およびlocation2はゼロではありません。

私は同様の質問をしましたが、見つけられませんでした。私にはiOS 9のバグのようです。同意しますか?同様の結果が得られますか?私はAppleにバグレポートを送ろうと思っていましたが、最初に確認したかったのです。

私はシミュレータ(iOS 8.4とiOS 9.1の両方)でコードを実行しました。システム言語はロシア語に設定され、地域はロシアに設定されました。

更新日:latlonが混在していることが判明しました。 Latitudeは[-90、90]の範囲内にある必要があります。以前のバージョンのiOSでは、まだ何らかの結果が出ました。 iOS 9では、彼らは0を返しました。私はこれが完全に有効な値であるため、このような場合の戻り値が良いとは思いません。代わりにエラーコードを返すべきだと思います(nilの場合のように、-1を返します)。少なくとも、それはドキュメントで言及されなければならない。私は近い将来にバグレポートを提出しようとしています。

答えて

2

location1の緯度の値を確認してください。緯度の範囲(-90、90)との不一致があると思います。

+0

あなたが示唆していることはまったく得られませんでした。もう少し説明していただけますか?最初の緯度は範囲内にありません(-90,90)。さらに、コードは有効な緯度/経度のペアで動作するはずです。 – FreeNickname

+1

137緯度の範囲は、(-90

+0

緯度の有効範囲は良い点です。ありがとうございます。あなたの答えをアップアップしました。私は、私は私たちのアプリのサーバー側を確認する必要がありますと思う。しかし、私はまだゼロを返すことがこの場合の有効な反応だとは思わない。引数がnilの場合は-1を返します。なぜ入力が間違っているとゼロを返すのですか(どのようにしても通常の戻り値)。 – FreeNickname

関連する問題