I could never get it to work more than once. I ended up adding an overlay that does nothing and puts onTouchEvent () in the overlay. It worked
public class OsmdroidDemoMap extends Activity { private MapView mMapView; private MapController mMapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.osm_main); mMapView = (MapView) findViewById(R.id.mapview); mMapView.setTileSource(TileSourceFactory.MAPNIK); mMapView.setBuiltInZoomControls(true); mMapView.setMultiTouchControls(true); mMapController = mMapView.getController(); mMapController.setZoom(13); GeoPoint gPt = new GeoPoint(51500000, -150000); mMapController.setCenter(gPt); MapOverlay movl = new MapOverlay(this); mMapView.getOverlays().add(movl); } public class MapOverlay extends org.osmdroid.views.overlay.Overlay { public MapOverlay(Context ctx) {super(ctx);} @Override protected void draw(Canvas c, MapView osmv, boolean shadow) { } @Override public boolean onTouchEvent(MotionEvent e, MapView mapView) { if(e.getAction() == MotionEvent.ACTION_DOWN) Toast.makeText(OsmdroidDemoMap.this, "Touched", Toast.LENGTH_SHORT).show(); return false; } } }
Nickt source share