altosdroid: Add map polyline between pad and rocket
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / TabMap.java
index 7161a3409eacdaec47498eef5ac6ad00b80a5c9d..8fc8f59278ac2c59062c8bcb80d1a27a15179e5c 100644 (file)
 
 package org.altusmetrum.AltosDroid;
 
+import java.util.Arrays;
 
 import org.altusmetrum.altoslib_1.*;
 
 import com.google.android.gms.maps.CameraUpdateFactory;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.BitmapDescriptorFactory;
 import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.Marker;
+import com.google.android.gms.maps.model.MarkerOptions;
+import com.google.android.gms.maps.model.Polyline;
+import com.google.android.gms.maps.model.PolylineOptions;
 
 import android.app.Activity;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
@@ -41,6 +48,10 @@ public class TabMap extends Fragment implements AltosDroidTab {
        private GoogleMap mMap;
        private boolean mapLoaded = false;
 
+       private Marker mRocketMarker;
+       private Marker mPadMarker;
+       private Polyline mPolyline;
+
        private TextView mDistanceView;
        private TextView mBearingView;
        private TextView mLatitudeView;
@@ -104,6 +115,26 @@ public class TabMap extends Fragment implements AltosDroidTab {
                        mMap.getUiSettings().setZoomControlsEnabled(false);
                        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(40.8,-104.7),8));
 
+                       mRocketMarker = mMap.addMarker(
+                                       // From: http://mapicons.nicolasmollet.com/markers/industry/military/missile-2/
+                                       new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.rocket))
+                                                          .position(new LatLng(0,0))
+                                                          .visible(false)
+                                       );
+
+                       mPadMarker = mMap.addMarker(
+                                       new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.pad))
+                                                          .position(new LatLng(0,0))
+                                                          .visible(false)
+                                       );
+
+                       mPolyline = mMap.addPolyline(
+                                       new PolylineOptions().add(new LatLng(0,0), new LatLng(0,0))
+                                                            .width(3)
+                                                            .color(Color.BLUE)
+                                                            .visible(false)
+                                       );
+
                        mapLoaded = true;
                }
        }
@@ -117,6 +148,16 @@ public class TabMap extends Fragment implements AltosDroidTab {
                mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E"));
 
                if (mapLoaded) {
+                       mRocketMarker.setPosition(new LatLng(state.gps.lat, state.gps.lon));
+                       mRocketMarker.setVisible(true);
+
+                       mPolyline.setPoints(Arrays.asList(new LatLng(state.pad_lat, state.pad_lon), new LatLng(state.gps.lat, state.gps.lon)));
+                       mPolyline.setVisible(true);
+
+                       if (state.state == AltosLib.ao_flight_pad) {
+                               mPadMarker.setPosition(new LatLng(state.pad_lat, state.pad_lon));
+                               mPadMarker.setVisible(true);
+                       }
                }
        }