OSMdroid长按监听/双击

时间:2012-08-06 14:47:51

标签: multi-touch osmdroid onlongclicklistener

我目前正在使用OSMdroid 我希望能够在我的地图上标记(使用触摸屏)某些点 第一种选择是使用长按。问题是我的系统将滚动识别为长按。 第二个选项是使用双选项卡。这具有更改缩放级别的效果。

我希望能够区分长按和滚动。有一个简单的方法吗?

以下link:中有一些建议 但是,我不确定这些建议是否可以通过OSMdroid实现。

提前致谢!

Ariel

2 个答案:

答案 0 :(得分:0)

当我想为OsmMap添加一些触控功能时,我还发现已经使用了点按和滚动等功能。

所以我做了所有的手势,需要用三根手指长按才能开始。用三根手指长按,然后向左或向右滑动,或用三根手指长按,然后向上猛扑。这样我的手势就不会干扰任何正常的地图手势。

我的应用程序在检测到三指长按后也不得不消耗触摸事件。否则,osm手势和我的手势会竞争,导致奇怪的滚动和缩放。

这需要添加一个特殊的Overlay和类似的代码:

@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
    boolean detected = false;
    if (myGestureDetector.onTouchEvent(event))
    {
        detected = true;
    }

    if (myGestureDetector.isTouchEventActive())
    {
        Log.d(D_LOG, "TOUCH EVENT ACTIVE DRAIN IT");
        detected = true;
    }

    return detected;
}

答案 1 :(得分:0)

请注意,此方法仅允许单次触摸事件。

您的活动需要implements MapEventsReceiver

然后,您需要将A MapEventsOverlay添加到mapwith:

//Handling Map events
MapEventsOverlay mapEventsOverlay = new MapEventsOverlay(this, this);
map.getOverlays().add(0, mapEventsOverlay); //inserted at the "bottom" of all overlays

Documented in the OSMDroidBonus Pack Tutorial