2012-05-02 19 views
0

私は非常に非常に非常にプログラミングの新しいですが、私はこれまでの私の道をfumbled:私はiPhoneのアプリケーションを作成しています 私の目標は、ストップウォッチ;あらかじめ設定された場所で始まり、あらかじめ設定された場所で停止します(両方ともユーザーによって設定されます)。あらかじめ設定されたGPS位置と実際のGPS位置が等しい場合、タイマーが開始/停止します。私はこれを、ボタンを押して変数として位置を設定することでやった。同じコードから与えられた2つの異なるGPS位置

ここに問題があります:2つの値は決して等しくありません。あらかじめ設定された開始位置と終了位置には、実際の位置(数値だけでなく、印刷された値)よりも多くの小数が含まれています。

ご了承ください!

答えて

3

2つの座標の間の距離を計算し、距離が開始位置または終了位置まで特定のしきい値(たとえば50m)を下回ったときにタイマーを開始/停止することができます。例えば

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location 

CLLocationがそうするためにconvient方法を提供

double lat = 51.7; 
double lng = 7.0; 
CLLocation *locationStart = [[CLLocation alloc] initWithLatitude:lat longitude:lng]; 
CLLocation *currentLocation = ...; // received from location services 

if ([locationStart distanceFromLocation:currentLocation] < 50) { 
    // start timer 
} 

また、代わりに任意の50メートルの現在位置のhorizontalAccuracyプロパティを使用して検討することができます。しかし、精度は数キロメートルほど悪くなることに注意してください。 MIN(horizontalAccuracy, 50)のようなものがうまくいくかもしれません。

+0

:CLLocationではどのデータ型を使用できますか?私はそれを整数、浮動小数点数、および倍精度浮動小数点数に等しく設定しようとしました、そして、それは変数を拒絶し続け、それが間違ったフォーマットだと言っています。 – user1370133

+0

CLLocationはオブジェクトクラスです。インスタンスを作成するには、緯度と経度が2倍(または2倍のCLLocationDegrees)として理想的です。 '[CLLocation alloc] initWithLatitude:lat longitude:lng]で作成することができます。 – FelixLam

+0

コード例を更新しました。 – FelixLam

関連する問題