#android #marker #osmdroid
#Android #маркер #osmdroid
Вопрос:
Привет, я создаю фрагмент, когда добавляю MapEventsReceiver для определения типа фигуры (прямоугольник, многоугольник, линия, маркер и т.д.), Чтобы определить, нажата ли форма. Но у меня проблема с маркером, я не могу определить, когда нажимается маркер. Я добавляю всплывающее сообщение, когда нажимаю на карту (метод получения MapEventsReceiver longPressHelper ()), и когда я нажимаю на все фигуры, это работает идеально, но не в Marker (запускается метод onLongPress из класса marker). Можно ли добавить прослушиватель маркеров в longPressHelper из MapEventReceiver (я хочу определить, что в longPressHelper нажат маркер)?
Комментарии:
1. Это могло бы помочь вам получить больше и более качественных ответов, если бы вы включили простой фрагмент кода, где мы могли бы увидеть, как вы на самом деле обрабатываете слушателей. В этом нет необходимости, но это помогло бы нам узнать, что вы на самом деле делаете и как.
Ответ №1:
Проблема с 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
.