title: MapView adding pushpins on touch
body: <p>I managed to get the map shown on the screen. Now the user will move around the map and press on it. After pressing on a point I need to add a push pin on screen on the pressed location. If the user decides to go for another point, when pressing on the chosen point, the first pushpin would disapear  and a new one will be drawn on the new location</p>
  
  <p>I did like this:</p>
  
  <pre><code>public class LocationSelectionActivity extends MapActivity 
  {    
       GeoPoint p;
       List&lt;Overlay&gt; listOfOverlays;
       MapOverlay mapOverlay;
  
      private MapView mapView;
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) 
      {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.locationselection);
  
          mapView = (MapView) findViewById(R.id.mapView);
          mapView.setSatellite(false);
  
          final MapController mc = mapView.getController();
          String coordinates[] = {"46.540606", "22.454542"};
  
          double lat = Double.parseDouble(coordinates[0]);
          double lng = Double.parseDouble(coordinates[1]);
  
           p = new GeoPoint(
              (int) (lat * 1E6), 
              (int) (lng * 1E6));
  
          mc.animateTo(p);
          mc.setZoom(10); 
  
  
          ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);
          zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
                  public void onClick(View v) {
                          mc.zoomIn();
                  }
          });
          zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
                  public void onClick(View v) {
                          mc.zoomOut();
                  }
          });
  
        //---Add a location marker---
          mapOverlay = new MapOverlay();
          listOfOverlays = mapView.getOverlays();
          listOfOverlays.clear();
          listOfOverlays.add(mapOverlay);
  
          mapView.invalidate();
      }
  
  
  
  
     class MapOverlay extends com.google.android.maps.Overlay
      {
          @Override
          public boolean draw(Canvas canvas, MapView mapView, 
          boolean shadow, long when) 
          {
              super.draw(canvas, mapView, shadow);                   
              //---translate the GeoPoint to screen pixels---
              Point screenPts = new Point();
              mapView.getProjection().toPixels(p, screenPts);
  
              //---add the marker---
              Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.map_flag);            
              canvas.drawBitmap(bmp, screenPts.x, screenPts.y-48, null);
  
              return true;
          }
  
          @Override
          public boolean onTouchEvent(MotionEvent event, MapView mapView) 
          {   
              //---when user lifts his finger---
              if (event.getAction() == 1) {                
                  GeoPoint p = mapView.getProjection().fromPixels(
                      (int) event.getX(),
                      (int) event.getY());
                      Toast.makeText(getBaseContext(), 
                          p.getLatitudeE6() / 1E6 + "," + 
                          p.getLongitudeE6() /1E6 , 
                          Toast.LENGTH_SHORT).show();
  
              }                            
              return false;
          }        
  
      } 
  </code></pre>
  
  <p>This draws the initial pushpin (the map_flag resource). When clicking on the map I get the Toast with the coordonates... all is left to do is on a new click, erase the old pin and add a new one.</p>
  
  <p>But how to do it ?</p>