X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FAltosMapOffline.java;h=6edc87a5c381ddd50438a560c83643d4cc89e5e1;hb=ea89feedd4185a5f583fa8ddf33a2ec0906e0dc0;hp=339b78946c945b8e72559bedf8e6140870688b9b;hpb=1513693602c2a4cab0783833d1844c066edabb71;p=fw%2Faltos diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java index 339b7894..6edc87a5 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java @@ -20,7 +20,7 @@ package org.altusmetrum.AltosDroid; import java.util.*; import java.io.*; -import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altoslib_10.*; import android.app.Activity; import android.graphics.*; @@ -253,6 +253,8 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal public void select_object(AltosLatLon latlon) { if (map.transform == null) return; + ArrayList near = new ArrayList(); + for (Rocket rocket : sorted_rockets()) { if (rocket.position == null) { debug("rocket %d has no position\n", rocket.serial); @@ -262,10 +264,11 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal debug("check select %d distance %g width %d\n", rocket.serial, distance, rocket_bitmap.getWidth()); if (distance < rocket_bitmap.getWidth() * 2.0) { debug("selecting %d\n", rocket.serial); - altos_droid.select_tracker(rocket.serial); - break; + near.add(rocket.serial); } } + if (near.size() != 0) + altos_droid.touch_trackers(near.toArray(new Integer[0])); } class Line { @@ -359,7 +362,6 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal @Override protected void onDraw(Canvas view_canvas) { - debug("onDraw"); if (map == null) { debug("MapView draw without map\n"); return; @@ -424,7 +426,7 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal double mapAccuracy; public void center(double lat, double lon, double accuracy) { - if (mapAccuracy < 0 || accuracy < mapAccuracy/10) { + if (mapAccuracy <= 0 || accuracy < mapAccuracy/10 || (map != null && !map.has_centre())) { if (map != null) map.maybe_centre(lat, lon); mapAccuracy = accuracy; @@ -439,6 +441,8 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal } public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { + boolean changed = false; + if (state != null) { map.show(state, null); if (state.pad_lat != AltosLib.MISSING && pad == null) @@ -477,7 +481,12 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal } } if (receiver != null) { - here = new AltosLatLon(receiver.getLatitude(), receiver.getLongitude()); + AltosLatLon new_here = new AltosLatLon(receiver.getLatitude(), receiver.getLongitude()); + if (!new_here.equals(here)) { + here = new_here; + AltosDebug.debug("Location changed, redraw"); + repaint(); + } } }