带标记的Osmdroid MapEventsReceiver不起作用

问题描述 投票:0回答:1

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

android marker osmdroid
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,这意味着,触摸事件不会传播到其他叠加而不是qazxsw poi。

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

Marker

现在,如果你使用你的派生类,长按应该传播到@Override public boolean onLongPress(final MotionEvent event, final MapView mapView) { return false; }

© www.soinside.com 2019 - 2024. All rights reserved.