2012-01-27 4 views
1

戻り値が正確でないdistanceFromLocation関数でこの問題が見つかりました。私が誤ってやったのか、機能がバグなのか確認してください。iphone-distanceFromロケーション精度

CLLocation *locA = [[CLLocation alloc] initWithLatitude:5.321008 longitude:100.290131]; 
CLLocation *locB = [[CLLocation alloc] initWithLatitude:5.321008 longitude:100.290138]; 
CLLocationDistance distance = [locA distanceFromLocation:locB]; 
NSLog(@"distance: %f, locA: %f,%f, locB: %f,%f",distance,locA.coordinate.latitude,locA.coordinate.longitude,locB.coordinate.latitude,locB.coordinate.longitude); 

出力は次のとおり

distance: 0.775644, locA: 5.321008,100.290131, locB: 5.321008,100.290138 

両方の位置が近いと10メートル未満であるべきです。ただし、関数はより大きな距離を返します。このようhttp://jan.ucc.nau.edu/~cvm/latlongdist.html、サイトでチェックし、距離は次のようになります。

Distance between 5.321008N 100.290131E and 5.321008N 100.290138E is 0.0008 km 

答えて

1

あなたの答えはほぼ同じであるあなたがkilemetersに変換する場合は、0.000775 kmを得るメートルです。詳細についてはreference documentation from appleを参照してください。

+0

ちょうどそれについての通知、指摘のおかげで – mnazwan

0

これはiPhoneのGPSに関する問題であり、コーディングの問題ではありません。

iphoneは主に他のものを行うためのものなので、製造元はSirf Star IIIのような重いGPSチップを入れない。これは電池の寿命を縮めるだろう。その代わりに、携帯電話は、セルタワーからの距離を計算し、三辺測量を行い、およその値を取得する9/11以降、携帯電話用の別のプロトコルに部分的に依存しています。チップセットが4つの衛星を見つけることができる場合、三角測量はより弱いGPSチップセットと組み合わせて機能する。その結果、GPS機能を使用すると、40フィート以上離れていることがよくあります。 Garminのような通常のハンドヘルドGPSユニット(差動GPSユニットではない)は、しばしば2〜3メートルも離れています。

詳細については、ウィキペディアのDifferential GPSを参照してください。