我永远无法让它工作多次。我最终添加了一个无所作为的叠加层,并在覆盖层中放置了一个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;
}
}
}
是的,我没试过,但它并没有奏效。 – fulupr 2012-02-23 21:00:22
嗡嗡声。也许你可以尝试onTouchEvent?您可以在MapActivity中重写此方法 – 2012-02-23 21:02:44
我不能@Override onTouchEvent方法,因为活动只是扩展了Activity,因此它给我一个错误,指出“MainActivity类型的onTouchEvent(MotionEvent,MapView)方法必须重写超类方法”。 – fulupr 2012-02-23 21:09:13