1

屋内で iPhone 4 を使用。WiFi は無効

LocateMe SDK サンプルまたは独自のコードを 30 ~ 60 秒間実行すると、2294 メートルの水平精度が得られます。かなり不正確ですが、セル タワーの三角測量には妥当です。Foursquare のようなリバース ジオコーディングや位置情報の処理を行う他のアプリを見ると、同様に精度が低いことがわかります。

ただし、Mapkit を使用するアプリの別のビューに切り替えて、ユーザーの場所を確認/表示すると、その場所に表示されます。私は、WiFiレベルの場所または強力なGPS読み取りに関連付ける地図上で正確な家のレベルを意味します.

そのため、Mapkit は、デバイスで WiFi が有効になっているときに取得されたキャッシュされた場所の読み取りに依存している可能性が高いと考えました。設定で位置情報サービスをオフにしました。マップ アプリを再起動すると、マップが現在の場所から離れて移動しました。位置情報サービスを再度有効にします。マップアプリをもう一度開きます - 強力な位置情報を読んでビンゴに戻ります。

私の知る限り、ロケーション サービスはシステム レベルのシングルトンであり、CLLocationManager インスタンスと同じデータが MapKit と共有されます。私が考えることができる唯一のことは、位置がMapKitでより自由にキャッシュされており、位置情報サービスをオフにしても、map.appが開始されてもキャッシュがクリアされないことです.

MapKit でユーザーの場所の年齢を確認する方法を知っている人はいますか? さらに調査したいと思います。文書化されていない呼び出しまたはプロパティであっても、出荷できない場合でも、何が起こっているのかを理解するためにデバッグに使用したいと思っています。

ありがとう

4

1 に答える 1

3

MKMapViewによって使用されるユーザーの場所のタイムスタンプには、次のようにアクセスできます。

[[[mapView userLocation] location] timestamp];

タイムスタンプは、NSDateこの場所がいつ決定されたかを示します。

于 2010-10-19T14:50:45.890 に答える