我也不能让它工作不止一次。我最终添加了一个什么都不做的叠加层,并在叠加层中放置了一个 onTouchEvent()。这有效
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;
}
}
}