4

私はこれを運転ルートなどには使用していません。いくつかの注釈があり、ユーザーがそれらのいずれかの近くにいるときにトリガーが必要なため、ユーザーに警告できます。

didUpdateToLocation は、startUpdatingLocation 呼び出しごとに 1 回だけ呼び出されるようです。少なくともそのメソッド内で NSLog を実行すると、コンソールに 1 行しか表示されません。いいえ、私はiPhoneを持って歩き回っていません。

だから:userLocationの継続的な監視を設定して「コールバック」を取得する正しい方法は何ですか(3〜4秒が経過したとき、またはユーザーが10メートル移動したときなど)?

4

1 に答える 1

5

おそらくご存じのとおり、これはロケーション マネージャーを初期化して開始するためのコードです。

locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone; 
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
[locationManager startUpdatingLocation];

そして、次のようにdidUpdateToLocationを実装します。

- (void) locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*) oldLocation 
{
   // This will be called every time the device has any new location information. 
}

didUpdateToLocation場所が更新されるたびに、システムが呼び出します。システムが場所の変更を検出しない場合はdidUpdateToLocation呼び出されません。あなたができる唯一のことは、最高の精度を得るために例で行ったようにdistanceFilterandを設定することです.desiredAccuracy

アップデート

精度を高めるには、kCLLocationAccuracyNearestTenMeters の代わりに kCLLocationAccuracyBest を使用します。

于 2010-08-03T07:41:30.150 に答える