2012-08-06 54 views
1

我目前使用OSMdroid。
我希望能夠在地圖上標記(使用觸摸屏)某些點。
第一種選擇是使用長時間點擊。問題在於我的系統將滾動視爲長時間點擊。 第二個選項是使用雙選項卡。這具有改變縮放級別的效果。OSMdroid長按聽衆/雙擊

我希望能夠區分長點擊和滾動。有沒有簡單的方法來做到這一點?

下面有一些暗示link:
但是,我不確定這些建議是否可以用OSMdroid實現。

在此先感謝!

阿里爾

+0

建議中的鏈接都不錯。我自己將onTouchListener直接指向mapView,並且只是覆蓋doubletap – Ifor 2012-08-07 07:53:59

回答

0

當我想一些觸摸功能添加到OsmMap,我還發現,自來水和滾動等已經使用。

所以我讓我所有的手勢都需要用三根手指開始。手勢是用三根手指長按,然後向左或向右滑動,或者用三根手指長按然後飛起來。這樣我的手勢不會干擾任何正常的地圖手勢。

我的應用程序在檢測到三指longpress後也必須使用觸摸事件。否則,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; 
} 
0

注意,此方法只允許一個單一的觸摸事件。您的活動需要implements MapEventsReceiver

然後,您需要將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