我目前正在使用OSMdroid 我希望能够在我的地图上标记(使用触摸屏)某些点 第一种选择是使用长按。问题是我的系统将滚动识别为长按。 第二个选项是使用双选项卡。这具有更改缩放级别的效果。
我希望能够区分长按和滚动。有一个简单的方法吗?
以下link:中有一些建议 但是,我不确定这些建议是否可以通过OSMdroid实现。
提前致谢!
Ariel
答案 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