带标记的 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
。
您好,当我添加 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
。