From: Keith Packard Date: Wed, 24 Jun 2015 19:02:22 +0000 (-0700) Subject: altosdroid: Display direction in map view X-Git-Tag: 1.6.0.4~23 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=71d924288d45b09ae655d06df9780ba286e3f3be;ds=sidebyside altosdroid: Display direction in map view Use direction in map view when available, otherwise use bearing Signed-off-by: Keith Packard --- diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index db7815f3..b87b51b5 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -998,6 +998,12 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { static String direction(AltosGreatCircle from_receiver, Location receiver) { + if (from_receiver == null) + return null; + + if (receiver == null) + return null; + if (!receiver.hasBearing()) return null; @@ -1016,8 +1022,8 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { else if (iheading < -179 || 179 < iheading) return "backwards"; else if (iheading < 0) - return String.format("left %d", -iheading); + return String.format("left %d°", -iheading); else - return String.format("right %d", iheading); + return String.format("right %d°", iheading); } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index 0ee202a4..81b6fe54 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -37,6 +37,7 @@ public class TabMap extends AltosDroidTab { AltosLatLon here; private TextView mDistanceView; + private TextView mBearingLabel; private TextView mBearingView; private TextView mTargetLatitudeView; private TextView mTargetLongitudeView; @@ -63,6 +64,7 @@ public class TabMap extends AltosDroidTab { int map_source = AltosDroidPreferences.map_source(); mDistanceView = (TextView)view.findViewById(R.id.distance_value); + mBearingLabel = (TextView)view.findViewById(R.id.bearing_label); mBearingView = (TextView)view.findViewById(R.id.bearing_value); mTargetLatitudeView = (TextView)view.findViewById(R.id.target_lat_value); mTargetLongitudeView = (TextView)view.findViewById(R.id.target_lon_value); @@ -99,8 +101,19 @@ public class TabMap extends AltosDroidTab { public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { if (from_receiver != null) { - mBearingView.setText(String.format("%3.0f°", from_receiver.bearing)); + String direction = AltosDroid.direction(from_receiver, receiver); + if (direction != null) { + mBearingLabel.setText("Direction"); + mBearingView.setText(direction); + } else { + mBearingLabel.setText("Bearing"); + mBearingView.setText(String.format("%3.0f°", from_receiver.bearing)); + } set_value(mDistanceView, AltosConvert.distance, 6, from_receiver.distance); + } else { + mBearingLabel.setText("Bearing"); + mBearingView.setText(""); + set_value(mDistanceView, AltosConvert.distance, 6, AltosLib.MISSING); } if (state != null) {