summaryrefslogtreecommitdiff
path: root/altoslib
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-10-12 00:26:31 -0700
committerKeith Packard <keithp@keithp.com>2017-10-12 00:26:31 -0700
commita69d5773a63dbe5d6d758cea8eca2bf724e9d672 (patch)
tree64d04a6ae020c11c44261fdf3b0505c5cb44c425 /altoslib
parent9d7bb706918fd7d6db77eab21931b4fc74cb9105 (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.java25
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;