2011-07-08 17 views
1

私はstackoverflowの質問のいくつかを閲覧しましたが、明確な画像を得ることができませんでした。私はGPSを使ってユーザーの位置を取得し、私が得た価値に基づいて処理することを含むiPhoneアプリケーションに取り組んでいます。私はこれをどのように実装すべきかを確認したがっていますか?この方法の使用:iPhoneが時間間隔でユーザーの場所を取得しています

[locationManager startUpdatingLocation] 

することは私に正確な位置を与えるが、それは私が望んでいないことが多いの更新を続けています。私は定期的にユーザーの場所を取得したいと考えています。つまり、2分ごとです。それをどうやって実装するのですか?

思った方法(10秒間隔):

- (void)viewDidLoad { 
    self.locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    NSTimer *currentTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(theActionMethod) userInfo:nil repeats:YES]; 
} 

とタイマーの動作方法において:

- (void)theActionMethod { 
    [locationManager startUpdatingLocation]; 
} 

及び方法didUpdatetoLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    self.startingPoint = newLocation; 
    NSString *latitudeString = [[NSString alloc] initWithFormat:@"%g\u00B0", newLocation.coordinate.latitude]; 
    NSLog([@"Latitude : " stringByAppendingString:latitudeString]); 
    [latitudeString release]; 
    [locationManager stopUpdatingLocation]; 
} 

今私は全体を通して同じ価値を得ています。 10秒ごとに位置は更新されますが、すべての値は同じままです(経度、水平精度、高度、垂直精度などを印刷しようとしました)。ですから、2分ごとにユーザーの位置を正確に取得する方法を教えてください。

また、monitoringRegionsと重要な場所変更の実装方法も知りたいと思います。誰もそれをうまく実装していますか?私はそれをすることができませんでした。私は何の変化も気付かなかった(私はdidEnterRegionで何かを印刷したが、私はその地域を出入りしても印刷されなかった)。ありがとうございます。

+0

これは2つの質問です。 2つの別々の質問をする必要があります。そしてあなたのmonitoringRegionsはあまりにも一般的です - 正確にはうまくいかなかったのですか? あなたの主な質問に戻ってください:実際の場所が10秒ごとに変わるように、車/列車/バス/飛行機/ボートでこれをテストしていますか?机の上に座っているだけでは、GPSの位置は毎回同じになります(最初のゼロイン後)。 – Rayfleck

+0

私は2つの質問としてそれを求めていたはずです。とにかく、私はmonitoringRegionsがどのように機能するのかよくわかりません。更新頻度はどのくらいですか?移動中は、10秒で地域を横断する(10秒以内に出入りする)ことを考えてください。これが私に通知されますか?私は、私のおおよそのモニタリング範囲を出入りしてテストしていました。 – Goku

+0

あなたはどんな正確さを期待していますか?私は正確な限界を知らないが、おそらく100メートルは近いだろう。言い換えれば、GPSはあなたが75メートルだけ移動したことを(正確に)判断することはできません。 – Rayfleck

答えて

2

あなたが既にやっているのと同じことをやってください。デリゲートメソッドを無視して、theActionMethod:を変更してlocationManager.locationプロパティを使用するようにしてください。

+0

こんにちは、ちょうど作業の詳細を知りたかったので、デリゲートメソッドを削除して、 'locationManager.location'を使って' theActionMethod'で更新された位置の値を取得すると言うつもりですか?あなたは私がそれをやって学ぶのを助けるどんなリソースにでも私を指すことができますか、それを行う方法を編集することができれば素晴らしいでしょう。ありがとう。 – iSeeker

関連する問題