0

ですから、私はプログラミングに非常に慣れていませんが、ここまでの道のりをいじくりまわしました。私はIphoneアプリを作成しています。私の目標は、自動ストップウォッチを作成することです。事前に設定された場所で開始し、事前に設定された場所で停止するもの(どちらもユーザーが設定します)。事前設定されたGPS位置と実際のGPS位置が等しい場合、タイマーが開始/停止します。ボタンを押すだけで場所を変数として設定することでこれを行いました。

ここに問題があります:2つの値は決して等しくありません。事前設定された開始位置と終了位置には、「実際の」位置(印刷された値だけでなく値自体)よりもはるかに多くの小数が含まれ、それらが等しくない場合、タイマーは開始されません。

どんな助けでも大歓迎です!!!!

4

1 に答える 1

3

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

CLLocationそうするための便利な方法を提供します:

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

例えば:

 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 
 } 

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

于 2012-05-02T13:51:33.653 に答える