diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-03-25 18:09:53 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-25 18:09:53 +0000 |
| commit | ca57e40adc0b89e7dc5409475f7510c0c188d715 (patch) | |
| tree | d1fd636e0bdd67e36870ae891ed55d7d764689cf /test-runner/src/main/kotlin | |
| parent | b5ab0c5236d7503dc002b7bf04e0e33b9c7ff9fa (diff) | |
feat(track): implement GPS track recording with map overlay
- TrackRepository + TrackPoint wired into MainViewModel:
isRecording/trackPoints StateFlows, startTrack/stopTrack/addGpsPoint
- MapHandler.updateTrackLayer(): lazily initialises a red LineLayer
and updates GeoJSON polyline from List<TrackPoint>
- fab_record_track FAB in activity_main.xml (top|end of bottom nav);
icon toggles between ic_track_record and ic_close while recording
- MainActivity feeds every GPS fix into viewModel.addGpsPoint() and
observes trackPoints to redraw the polyline in real time
- ic_track_record.xml vector drawable (red record dot)
- 8 TrackRepositoryTest tests all GREEN
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'test-runner/src/main/kotlin')
| -rw-r--r-- | test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt | 12 | ||||
| -rw-r--r-- | test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt | 24 |
2 files changed, 36 insertions, 0 deletions
diff --git a/test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt b/test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt new file mode 100644 index 0000000..d803c8c --- /dev/null +++ b/test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt @@ -0,0 +1,12 @@ +package org.terst.nav.track + +data class TrackPoint( + val lat: Double, + val lon: Double, + val sogKnots: Double, + val cogDeg: Double, + val windSpeedKnots: Double, + val windAngleDeg: Double, + val isTrueWind: Boolean, + val timestampMs: Long +) diff --git a/test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt b/test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt new file mode 100644 index 0000000..c90adb9 --- /dev/null +++ b/test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt @@ -0,0 +1,24 @@ +package org.terst.nav.track + +class TrackRepository { + + var isRecording: Boolean = false + private set + + private val points = mutableListOf<TrackPoint>() + + fun startTrack() { + points.clear() + isRecording = true + } + + fun stopTrack() { + isRecording = false + } + + fun addPoint(point: TrackPoint) { + if (isRecording) points.add(point) + } + + fun getPoints(): List<TrackPoint> = points.toList() +} |
