2012-03-13 3 views
4

iOS5/iPhone 4Gで正確な地域の監視をしようとしていますが、運がうまくいかないようです。明確にするために、私は地域入力イベントを得ることができます。私はそれらを早めに入手しているだけです。私に説明させてください。このコードでは、10メートルに設定されている、iOS5地域の監視精度

#define GEO_FENCING_RADIUS 10 // in meters 

CLLocationDistance radius = GEO_FENCING_RADIUS; 

// Create the region and start monitoring it. 
CLRegion* region = [[CLRegion alloc] initCircularRegionWithCenter:coordinate 
                  radius:radius 
                 identifier:identifier]; 
[self.locationManager startMonitoringForRegion:region 
           desiredAccuracy:kCLLocationAccuracyBest]; 

半径:これは、領域を設定するための私のコードです。私が前提にしているのは、この場所から10メートル以内にいる場合に限り、地域通知を受け取るということです。代わりに、私ははるかに高い距離の値で通知を得ることができます(私は2マイルの近接が地域を引き起こしているのを見ました)。何が原因でしょうか?また、私はsignificantLocationChangeMonitoringAvailableをCLLocationManagerに設定されたデフォルト値と共に使用しています。多分、significantLocationChangeMonitoringAvailableを使用すると、何らかの理由でより正確なトリガーイベントが排除されますか?

ここで何が起こっているのでしょうか?

答えて

2

重要なロケーション変更サービスは、重要なロケーション変更のみです。 docsから:

この方法は、デバイスが唯一の重要な場所の変化に基づいて最新情報を報告することができるかどうかを示します。この機能は、ユーザーのおおよその位置を追跡し、非常に正確な位置情報を必要としないアプリケーションには、非常に大きな電力節約を提供します(重要なロケーションの変更の監視は、現在、デバイスに関連付けられているセルタワーの変更を検出することを主に含みます)。

リージョンのモニタリングは同じように機能するため、関心のあるポイントから約1km以内にいる場合にのみ通知することができます。 (これはセルタワーの測位に基づいているため、エリア内のセルタワーの密度に応じて多かれ少なかれ精度が得られ、セルラー接続のデバイスでのみこのアプローチを使用できます。 WiFi iPad)

地域監視/重要な変更監視の電力メリットと、関心領域内の位置を正確に追跡する機能が必要な場合は、最初に設定する必要があります...次に、関心のある領域の近くにいたら、より高い精度の監視に切り替えます。 CLLocationManagerの別のインスタンスを使用するのが最善です。

+0

精度が高い場合、重要な位置の変更に対して領域監視を使用する利点はありますか? – user836026

+1

精度に関してはほぼ同じですが、目的は異なります。あなたのアプリは、ユーザーが帰宅してから20kmの通勤後に仕事場に到着したことを知りたいとしているとしましょう...地域の監視機能を使用すると、ユーザーが家から約1km離れたところで通知を受けることができます。仕事から約1km以内に入る。重要なロケーションの変更を使用すると、ユーザーが約1km移動するたびに10-20の通知が届きます(この例では通知が不要なため、バッテリーを無駄にするだけです)。 – rickster

+1

(両方のサービスは現在デバイスに関連付けられているセルタワーに基づいているため、人口密度の高い地域では1km以上の精度が得られ、人口が少ない地域では悪化する可能性があります.1kmは一般的なガイドラインです平均して期待できる) – rickster

関連する問題