altosdroid: Fix line drawing to old tracker location
authorKeith Packard <keithp@keithp.com>
Tue, 23 Jun 2015 06:21:05 +0000 (23:21 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 23 Jun 2015 06:21:05 +0000 (23:21 -0700)
Selecting an old tracker would often fail to switch the bearing line
as it was using the map data instead of just using the local data for
the relavant tracker.

Signed-off-by: Keith Packard <keithp@keithp.com>
altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java

index 12dd2f2..339b789 100644 (file)
@@ -86,6 +86,7 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal
        AltosDroid              altos_droid;
 
        AltosLatLon     here;
+       AltosLatLon     there;
        AltosLatLon     pad;
 
        Canvas  canvas;
@@ -334,7 +335,7 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal
        }
 
        private void draw_positions() {
-               line.set_a(map.last_position);
+               line.set_a(there);
                line.set_b(here);
                line.paint();
                draw_bitmap(pad, pad_bitmap, pad_off_x, pad_off_y);
@@ -465,8 +466,12 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal
                                        rocket = new Rocket(serial, this);
                                        rockets.put(serial, rocket);
                                }
-                               if (t_state.gps != null)
-                                       rocket.set_position(new AltosLatLon(t_state.gps.lat, t_state.gps.lon), t_state.received_time);
+                               if (t_state.gps != null) {
+                                       AltosLatLon     latlon = new AltosLatLon(t_state.gps.lat, t_state.gps.lon);
+                                       rocket.set_position(latlon, t_state.received_time);
+                                       if (state.serial == serial)
+                                               there = latlon;
+                               }
                                if (state != null)
                                        rocket.set_active(state.serial == serial);
                        }