3

kCLLocationAccuracyHundredMeters定数を利用する場合、どのロケーションデータが使用され、OSがデータをプルするときにそのデータはどこに保存されますか?「最後の既知の場所」は以前はcache.plistに保存されていましたが、iOS4.2.8以降はそうではありません。

アプリケーションがデバイスの場所をどのように決定するかをよりよく理解しようとしています。Core Location Frameworkは、位置関連データの呼び出しを許可しますが、APIの背後にある詳細を隠します。

4

2 に答える 2

0

デバイスの場所を決定するのはアプリではなく、デバイスです。(ハードウェアとソフトウェア)デバイスには、CoreLocationAPIを介してデバイスの場所についてアプリに通知する機能があります。場所は自動的に追跡されませんが、デバイスに追跡を依頼することができます(これもAPIを介して)。

kCLLocationAccuracyHundredMetersのような定数の背後にある理論的根拠は、ローカリゼーションの精度を上げると、計算能力の量が増えるということです。必要なものがすべて100メートルであれば、10メートルの精度で自分の位置を見つけることに投資しても意味がありません。

内部的には、デバイスの位置を特定するために使用される2つのデータソースがあります。1。地球を取り巻くGPS衛星から信号を受信し、タイミング情報を送信できる、デバイスに組み込まれたGPSチップ。デバイスまでの距離が異なり、光速が有限であるため、信号は異なる時間に到着するため、位置を計算できます。2.それぞれの位置との可視SSIDのデータベースが使用され、そこからそれぞれの位置への近さがわかります。

とはいえ、アプリ開発者にとっては、それぞれのデータがデバイスの内部にどのように保存されているかはほとんど関係ありません。知っておく必要があるのはAPIだけです。

于 2012-10-12T15:14:31.077 に答える
0

When you assign the kCLLocationAccuracyHundredMeters to the desiredAccuracy property of your CLLocationManager, what you are actually doing is suggesting the manager the level of accuracy you want on the location it reports to you. The CLLocationManager can be a gentleman and provide you with the desired accuracy, but sometimes, it is not possible for the locationManager to provide you with such level of accuracy. What you need to do is, in your delegate, when you are receiving the CLLocation objects, you look for the date the location was captured, and the horizontal/vertical accuracy properties. This will allow you to determine how accurate the data really is.

The CLLocationManager's location property will give you the last recorded location, even before reporting location changes to its delegate.

于 2012-10-12T15:22:54.543 に答える