2016-10-26 16 views
0

私はCore Locationの使用についていくつかの研究を行っています。 私はコアデータを介して位置情報を保存したいと思います。 これまでのところCLLocation情報を保存するだけのようです(これは本質的に最小の位置情報です)。 このCLLocationは、後でデータを復元し、ユーザーが特定の場所にいるかどうかを判断するために必要ですか?コアデータをコアデータに保存しますか?

答えて

1

NSCodingに準拠しているため、「変換可能」タイプのコアデータ属性を作成するだけで簡単です。次に、CLLocationオブジェクトをこの属性に割り当てて読み戻すことができます。

ただし、この値を使用してデータをフィルタリングまたは並べ替えることはできません。たとえば、特定の地域にあるすべてのインスタンスを検索する場合などです。そのためには、CLLocationの緯度と経度の値を表す属性をCLLocationとは別に追加する必要があります。また、どのようなフェッチを行うかによって、標高や精度の情報が必要な場合があります。

1

私は、CoreDataデータベースのウェイポイントレコードにDoubles(NSNumbers)として緯度、経度、高度情報を保存し、それらを使用してデータベースからロードするたびにCLLocationCoordinate2Dポイントを作成します。

良い点があるかどうかを確認するために、フィルタリングを少し行いたい(水平精度が閾値以下で、悪い点にマイナス値でフラグを付けることができるため0を超える)。また、シーケンス外のデータには問題があります。そのため、ロードされた最新の値のタイムスタンプを追跡し、その値より前のタイムスタンプで新しいポイントを破棄します。

バックグラウンドモードとLocationManagerの設定には問題はありますが、CoreDataへのロケーションをキャプチャする構造がうまくいく - 数時間に渡って20,000を超えるウェイポイントのデータベースを問題なくキャプチャしました。

+0

ウェイポイントレコードとは何ですか?これはあなたが作成したカスタムオブジェクトですか? – AlvinfromDiaspar

+0

はい、ハイキングアプリの一部です。これは、GPSシステムで定義されたウェイポイントと同様のもので、情報が追加されています。 CoreDataでは、ハイキングに沿って行われたすべてのメディアキャプチャだけでなく、トレイルや公園などにリンクすることができます。 –

関連する問題