У меня было аналогичное требование с MapView Osmdroid, поскольку я не хотел, чтобы он выполнял «центр на двойном постукиваемом месте и увеличивал масштаб» по умолчанию. Я хотел, чтобы он поднял Тост. В моем случае у меня был оверлей поверх MapView, поэтому я просто использовал оверлей для двойного нажатия в методе onDoubleTap. Для ваших целей вы можете просто добавить наложение, которое ничего не рисует, но имеет свои собственные функции двойного нажатия.
Итак, в конце вашего onCreate вы можете добавить наложение. Это небольшое приложение, кажется, чтобы продемонстрировать, что вы хотите - (вам нужно добавить условный код для проверки уровня масштабирования и других мастерить):.
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);
mMapController = mMapView.getController();
mMapController.setZoom(13);
GeoPoint gPt = new GeoPoint(51500000, -150000);
mMapController.setCenter(gPt);
DummyOverlay dumOverlay = new DummyOverlay(this);
List<Overlay> listOfOverlays = mMapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(dumOverlay);
}
public class DummyOverlay extends org.osmdroid.views.overlay.Overlay {
public DummyOverlay(Context ctx) {
super(ctx); // TODO Auto-generated constructor stub
}
@Override
protected void draw(Canvas c, MapView osmv, boolean shadow) {}
@Override
public boolean onDoubleTap(MotionEvent e, MapView mapView) {
// This stops the 'jump to, and zoom in' of the default behaviour
int zoomLevel = mMapView.getZoomLevel();
mMapController.setZoom(zoomLevel + 3);
return true;// This stops the double tap being passed on to the mapview
}
}
Что DummyOverlay - это прозрачный наложенный «размер карты»? Я пытался обнаружить щелчок на маркере DirectedLocationOverlay - значит ли это, что я должен сам реализовать «был щелчок внутри маркера»? –