// provar con un dispositivo
 // se llama en una actualizacion de la localizacion
 public void onLocationChanged(Location l) {
   // TODO Auto-generated method stub
   lat = (int) l.getLatitude();
   lon = (int) l.getLongitude();
   // se crea un nuevo punto y se coloca en la lista de Overlyas con la localizacion actual
   GeoPoint ourLocation = new GeoPoint(lat, lon);
   OverlayItem overlayItem = new OverlayItem(ourLocation, "what's up", "2nd string");
   CustonPinpoint custom = new CustonPinpoint(d, MainActivity.this);
   custom.insertPinpoint(overlayItem);
   oveList.add(custom);
 }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    map = (MapView) findViewById(R.id.mvMain);
    map.setBuiltInZoomControls(true);
    Touchy t = new Touchy(); // Overlay para detectar toques en lapantalla
    oveList = map.getOverlays(); // obtiene todos los overlays que se dibujan en el mapa
    oveList.add(t); // agrega nuestro overlay de ultimo en la lista
    compass =
        new MyLocationOverlay(
            MainActivity.this, map); // se crea un nuevo Overlay de la localizacion actual
    oveList.add(compass); // se agrega el overlay de la localizacion
    controller = map.getController(); // se obtinenen los controles del mapa
    GeoPoint point = new GeoPoint(51643234, 7848593); // se crea un nuevo Geopoint
    controller.animateTo(point); // se indica a los controles que nos lleven al punto indicado
    controller.setZoom(6); // se hace un zoon de nivel 6
    d =
        getResources()
            .getDrawable(
                R.drawable.ic_launcher); // se crea un objeto dibujable por medio de un recurso

    // placing pintpoint at location
    lm =
        (LocationManager)
            getSystemService(Context.LOCATION_SERVICE); // manager para la localizacion GPS
    Criteria crit =
        new Criteria(); // un objeto criterio que maneja el mejor criterio de selleccion del
    // provider
    towers = lm.getBestProvider(crit, false); // se obtiene un proveedor de localizacion
    Location location =
        lm.getLastKnownLocation(towers); // se obtine la localizacion del provedor seleccionado

    // si hay una localizacion
    if (location != null) {
      lat = (int) location.getLatitude(); // se obtiene la lat  y long
      lon = (int) location.getLongitude();
      GeoPoint ourLocation = new GeoPoint(lat, lon); // se crea un nuevo punto
      // se crea un overlay para mostrar un dibujo en el punto indicado por la lat y lon
      OverlayItem overlayItem = new OverlayItem(ourLocation, "what's up", "2nd string");
      CustonPinpoint custom =
          new CustonPinpoint(
              d, MainActivity.this); // se crea un punto personal con el objeto dibujable
      custom.insertPinpoint(overlayItem); // se le dan los datos de la posicion en el mapa
      oveList.add(custom); // se agrega el punto en la lista de overlays
    } else {
      // cuando todo se va al carajo
      Toast.makeText(MainActivity.this, "no se puede encontrar un provider", Toast.LENGTH_LONG)
          .show();
    }
  }