そうです、ここに私がとるアプローチがあります:
- GPS 位置と IsNew フラグを持つクラスを含む空のリストを作成します
- 開始をクリックすると、現在の GPS 位置がリストに追加され (IsNew = true)、タイマーになります。
- 10 秒ごとに (テスト後に調整される可能性があります)、現在の GPS 位置をリストにポップします (IsNew = false)。
- 一時停止をクリックすると、タイマーが停止し、現在の GPS が表示されます
- 再開時、タイマーの再起動、現在の GPS のポップ (IsNew = true)
- 停止時、タイマーを停止し、GPS をポップする
すべての処理が完了すると、次のような IsNew フラグを含む GPS 位置のリストが表示されます。
- GPS = {x, y, z}, IsNew = true //開始ボタンのクリック
- GPS = {x, y, z}, IsNew = false //タイマー経過
- GPS = {x, y, z}, IsNew = false //タイマー経過
- GPS = {x, y, z}, IsNew = false //タイマー経過
- GPS = {x, y, z}, IsNew = false //一時停止クリック
- GPS = {x, y, z}, IsNew = true //クリックして再起動
- GPS = {x, y, z}, IsNew = false //タイマー経過
- GPS = {x, y, z}, IsNew = false //タイマー経過
- GPS = {x, y, z}, IsNew = false //タイマー経過
- GPS = {x, y, z}, IsNew = false //クリックを停止
そのリストには、いくつかの素敵な数学を使用して合計距離を計算するのに十分な情報が含まれているはずです ;-) (ここにそのための情報があります)
IsNew = true
その場合、そのポイントと前のポイントの間の距離を合計距離に含めるべきではないことに注意してください。
また、SPEED = DISTANCE / TIME
もちろん、別の方法を使用して、各ポイントを処理しながら合計距離を計算することもできます。これにより、「半リアルタイム」のフィードバックを提供できます。
このために、合計距離カウンターを保持し、これを各 GPS ポイントで更新します (つまり、タイマーが経過したとき) ... このアプローチでは、おそらく「IsNew」フラグを保存する必要がなくなります。