嗨我创建片段时,我添加MapEventsReceiver来检测形状类型(矩形,多边形,线,标记等),以便检测形状被点击。但我有Marker的问题,我无法检测到何时单击标记。当我点击地图(MapEventsReceiver方法longPressHelper())时我添加了Toast消息,当我点击所有形状时它完美但不在Marker中(它从标记类运行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;
}
你可以看到,当你长按标记时,方法返回true,这意味着,触摸事件不会传播到其他叠加而不是qazxsw poi。
但是,如果您不需要标记的拖动功能,您可以自己扩展MapView
类并覆盖该行为:
Marker
现在,如果你使用你的派生类,长按应该传播到@Override public boolean onLongPress(final MotionEvent event, final MapView mapView) {
return false;
}
。