1

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

我希望能够区分长按和滚动。有没有一种简单的方法可以做到这一点?

以下链接中有一些建议:
但是,我不确定这些建议是否可以用 OSMdroid 实现。

提前致谢!

爱丽儿

4

2 回答 2

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;
}
于 2012-10-31T17:21:54.807 回答
0

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

您的活动需要implements MapEventsReceiver.

然后,您需要将 A 添加MapEventsOverlay到地图中:

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

记录在 OSMDroidBonus 包教程中

于 2015-07-03T09:49:27.890 回答