title: Create an Android GPS tracking application
body: <p>Recently, I've taken up android development as a hobby and was looking to develop an application that can find and track a users position using Google Maps.</p>
  
  <p>Once the application has a GPS lock, it can track their movements by drawing a route using an overlay class.</p>
  
  <p>I've seen similar applications like Mytracks that are open source but they're too complex for me right now.</p>
  
  <p>Ideally i'd love to create an application that looks like this</p>
  
  <p><img src="https://i.stack.imgur.com/D8aMp.jpg"/></p>
  
  <p>Here is my code below without the imports.</p>
  
  <p>What I'm trying to do is create an array of geopoints.
  Every time the location changes a new geopoint is created.
  I then try to use a for loop to iterate through each geopoint and draw a path between them.</p>
  
  <pre><code>public class Tracking extends MapActivity implements LocationListener {
  
  LocationManager locman;
  LocationListener loclis;
  Location Location;
  private MapView map;
  
  List&lt;GeoPoint&gt; geoPointsArray = new ArrayList&lt;GeoPoint&gt;();
  private MapController controller;
  String provider = LocationManager.GPS_PROVIDER;
  double lat;
  double lon;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.map);
      initMapView();
      initMyLocation();
      locman = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
      // locman.requestLocationUpdates(provider,60000, 100,loclis);
      // Location = locman.getLastKnownLocation(provider);
  
  }
  
  /** Find and initialize the map view. */
  private void initMapView() {
      map = (MapView) findViewById(R.id.map);
      controller = map.getController();
      map.setSatellite(false);
      map.setBuiltInZoomControls(true);
  }
  
  /** Find Current Position on Map. */
  private void initMyLocation() {
      final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
      overlay.enableMyLocation();
      overlay.enableCompass(); // does not work in emulator
      overlay.runOnFirstFix(new Runnable() {
          public void run() {
              // Zoom in to current location
              controller.setZoom(24);
              controller.animateTo(overlay.getMyLocation());
          }
      });
      map.getOverlays().add(overlay);
  }
  
  @Override
  public void onLocationChanged(Location location) {
      if (Location != null) {
          lat = Location.getLatitude();
          lon = Location.getLongitude();
          GeoPoint New_geopoint = new GeoPoint((int) (lat * 1e6),
                  (int) (lon * 1e6));
          controller.animateTo(New_geopoint);
  
      }
  
  }
  
  class MyOverlay extends Overlay {
      public MyOverlay() {
      }
  
      public void draw(Canvas canvas, MapView mapv, boolean shadow) {
          super.draw(canvas, mapv, shadow);
  
          Projection projection = map.getProjection();
          Path p = new Path();
          for (int i = 0; i &lt; geoPointsArray.size(); i++) {
              if (i == geoPointsArray.size() - 1) {
                  break;
              }
              Point from = new Point();
              Point to = new Point();
              projection.toPixels(geoPointsArray.get(i), from);
              projection.toPixels(geoPointsArray.get(i + 1), to);
              p.moveTo(from.x, from.y);
              p.lineTo(to.x, to.y);
          }
          Paint mPaint = new Paint();
          mPaint.setStyle(Style.STROKE);
          mPaint.setColor(0xFFFF0000);
          mPaint.setAntiAlias(true);
          canvas.drawPath(p, mPaint);
          super.draw(canvas, map, shadow);
      }
  }
  
  @Override
  public void onProviderDisabled(String provider) {
      // TODO Auto-generated method stub
  
  }
  
  @Override
  public void onProviderEnabled(String provider) {
      // TODO Auto-generated method stub
  
  }
  
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {
      // TODO Auto-generated method stub
  
  }
  
  @Override
  protected boolean isRouteDisplayed() {
      // TODO Auto-generated method stub
      return false;
  }
  }
  </code></pre>
  
  <p>The application runs fine without errors but there is no path drawn, the location dot just moves as i move.</p>
  
  <p>Any help would be greatly appreciated 
  Thanks.</p>