2012-02-06 4 views
2
CLLocaitonManagerで遊んでいる間、私は本当に奇妙な状況に遭遇した

...私は10.0メートルの半径を有する領域を追跡領域を利用していCLLocationManager didEnterRegion間違っ通​​知

manager = [[CLLocationManager alloc] init]; 
[manager setDistanceFilter:kCLDistanceFilterNone]; 
[manager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters]; 
manager.delegate = self; 

...

[manager startMonitoringForRegion:region]; 

私の定義された地域はお互いに非常に近いですが、間違いなく50-100メートル近くにありません... iOS(5.0)シミュレータで私のアプリケーションをテストしているとき(Appleに位置を設定し、私のカスタム位置に戻って)近くにある地域では、同時に複数の通知が表示されますお互いが...私はまた、検出された領域の場所と私の現在の位置との間の距離を確認しています...

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region 
{ 
CLLocation *regionLocation = [[CLLocation alloc] initWithLatitude:region.center.latitude longitude:region.center.longitude]; 

NSLog(@"didEnterRegion: %@ %f", region.identifier, [regionLocation distanceFromLocation:mapView.userLocation.location]); 

[self notifyUserDidEnterRegion:region]; 
} 

問題は、私は200メートル離れて私の現在の場所から例えばある地域の通知を取得するということです...と私はほとんど同じ時刻にいくつかの通知を得る...

何か提案はありますか?または、私はおそらく詳細を提供する必要がありますか?

答えて

1

リージョンの監視はそれに限定されます。残念ながら、メートルの範囲で精度を得ることはできませんが、iOS5では約200mの範囲で改善されましたが、セルタワーの三角測量とWi-Fiスポットに基づいているため、多くの要因によって異なります。私がより精度を上げるために見つけた唯一の方法は、目標に近づいて離れて移動している間に精度を変えることです。GPSのマルチタスクをアクティブにする必要がありますが、アルゴリズムをうまく実装すれば、多くのバッテリー。 希望すると、 さんAndrea

+0

[OK]を...私はこのことがいくつかの状況では私のトリッキーなことを理解しています...しかし、私はまだ3つの場所の通知を同時に取得する理由を取得していない私は1つから5m離れていることを知っています...他のものから100m離れていて最後のものから200m離れています...論理的にはちょっと意味がありません... –

+0

あなたはそれについて失望していることを理解しています初めて私がそれを発見した。あなたの場所が約400メートルの範囲にあるためです。あなたの精度が200m以上であれば(そしてそれは場所の監視中です)、その範囲内のすべてがトリガーされます。私はあなたが与える精度は、あなたが地域監視を開始するときに無効になることを意味します。 – Andrea

関連する問題