带标记的 Osmdroid MapEventsReceiver 不起作用

Osmdroid MapEventsReceiver with Marker doesn't work

您好,当我添加 MapEventsReceiver 来检测形状类型(矩形、多边形、线、标记等)以检测形状是否被单击时,我创建了片段。但是我的标记有问题,我无法检测到单击标记的时间。我在点击地图时添加了 Toast 消息(MapEventsReceiver 方法 longPressHelper()),当我点击所有形状时它工作完美但在标记中不是(它是来自标记 class 的 运行 onLongPress 方法)。可以从 MapEventReceiver 向 longPressHelper 添加 Marker 侦听器(我想检测在 longPressHelper 中单击的 Marker)?

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;
    }

您可以看到,当您长按标记时,方法 returns 为真,这意味着触摸事件不会传播到其他叠加层,也不会传播到 MapView

但是,如果您不需要标记的拖动功能,您可以自己扩展 Marker class 并覆盖行为:

@Override public boolean onLongPress(final MotionEvent event, final MapView mapView) {
   return false;
}

现在,如果您使用派生的 class,长按应该会传播到 MapView