Проблема с Marker
заключается в том, что он фактически обрабатывает длинное нажатие сам по себе и предотвращает его распространение.
Если вы проверяете исходный код Marker
@Override public boolean onLongPress(final MotionEvent event, final MapView mapView) {
boolean touched = hitTest(event, mapView);
if (touched){
if (mDraggable){
//starts dragging mode:
mIsDragged = true;
closeInfoWindow();
if (mOnMarkerDragListener != null)
mOnMarkerDragListener.onMarkerDragStart(this);
moveToEventPosition(event, mapView);
}
}
return touched;
}
Вы можете видеть, что при длительном нажатии на маркер метод возвращает значение true, а это означает, что событие касания не будет распространено ни на другие наложения, ни на MapView
.
Однако, если вам не нужнофункциональность перетаскивания маркера, вы можете расширить класс Marker
самостоятельно и переопределить поведение:
@Override public boolean onLongPress(final MotionEvent event, final MapView mapView) {
return false;
}
Теперь, если вы используете производный класс, долгое нажатие должно быть распространено на MapView
.