diff options
author | Keith Packard <keithp@keithp.com> | 2017-10-12 00:26:31 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2017-10-12 00:26:31 -0700 |
commit | a69d5773a63dbe5d6d758cea8eca2bf724e9d672 (patch) | |
tree | 64d04a6ae020c11c44261fdf3b0505c5cb44c425 /altoslib | |
parent | 9d7bb706918fd7d6db77eab21931b4fc74cb9105 (diff) |
altoslib: Allow gps time later than requested if it's first
When generating a KML file, we want to position markers near the start
of the flight section. This is done by looking for a GPS coordinate
'before' the starting point of the flight, which doesn't work well
when the first GPS coordinate is later than that. Pick the first point
after the chosen time if there isn't an earlier one.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib')
-rw-r--r-- | altoslib/AltosFlightSeries.java | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index 02bf64ff..2eaf8033 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -489,13 +489,24 @@ public class AltosFlightSeries extends AltosDataListener { public ArrayList<AltosGPSTimeValue> gps_series; public AltosGPS gps_before(double time) { - AltosGPS gps = null; - for (AltosGPSTimeValue gtv : gps_series) - if (gtv.time <= time) - gps = gtv.gps; - else - break; - return gps; + AltosGPSTimeValue nearest = null; + for (AltosGPSTimeValue gtv : gps_series) { + if (nearest == null) + nearest = gtv; + else { + if (gtv.time <= time) { + if (nearest.time <= time && gtv.time > nearest.time) + nearest = gtv; + } else { + if (nearest.time > time && gtv.time < nearest.time) + nearest = gtv; + } + } + } + if (nearest != null) + return nearest.gps; + else + return null; } public AltosTimeSeries sats_in_view; |