私のアプリではService
があり、位置の更新を受け取り、データベースに保存します。私はFragment
も持っていて、データベースからすべての記録されたウェイポイントのMapView
とPolyLine
を表示しています。GPS読み取りからPolyLineトラックを更新するためのより良い方法
録画中に、は、新しいウェイポイントについて、Fragment
にPolyLine
を更新できるように通知します。問題は、ユーザーがアプリから離れてアプリをナビゲートすると、は、Fragment
が一時停止してからFragment
が更新されないことになります。だからonResume
私は新しいPolyLine
を作成し、データベースのすべてのウェイポイントを読んで、データベースに追加します。
これはすべて問題なく動作しますが、実際にはパフォーマンスの観点からは新しいPolyLine
を作成し、すべてのウェイポイント(数千もあるかもしれません)を再作成するのに最適です。私はすでにPolyLine
に入っていない新しいウェイポイントをもう一度追加することができたと思いますが、ここに誰かが別の解決方法を持っているかどうかを見たいと思っていましたか? Fragment
を「生きている」状態に保ち、アプリケーションがバックグラウンドになっていても(サービスが実行されている限り)、PolyLine
を更新する方法はありますか?それとももっと良い方法がありますか?ポリラインを再作成
ありがとう、それは良いアドバイスです!私は私の位置更新リスナーを登録するとすでに#2をやっています(デフォルトは10mの最小距離です)。直線検出は良い方法ですが、それを実装する方法はわかりません。何らかの許容範囲が必要です。 – BadCash
@BadCashこれを実現するには、いくつかの方法があります。私が考えることができる最高の1つは、2つの周囲の点によって作成された線と中点の距離を計算し、必要な誤差マージンによって決まる特定の値よりも小さいかどうかをチェックすることです。 –
ありがとうもう一度:)うん、それは行く一つの方法だろう。私は別の考えを持っていました。つまり、AmB(m =中点)から直線経路ABの長さとの長さを比較し、最初の直線が直線パスよりも一定の許容範囲(より長い)ストレートと見なすことができますか? – BadCash