2012-08-06 5 views
1

현재 OSMdroid를 사용 중입니다.
지도에서 특정 지점을 (터치 스크린으로) 표시 할 수 있기를 원합니다.
첫 번째 옵션은 긴 클릭을 사용하는 것입니다. 문제는 내 시스템이 긴 클릭으로 스크롤을 인식한다는 것입니다. 두 번째 옵션은 이중 탭을 사용하는 것입니다. 이것은 줌 레벨을 변경하는 효과가 있습니다.OSMdroid 롱 클릭 리스너/더블 탭

긴 클릭과 스크롤을 구분할 수 있기를 원합니다. 이 작업을 수행하는 간단한 방법이 있습니까?

다음과 같은 몇 가지 사항이 있습니다. link:
그러나 이러한 제안을 OSMdroid로 구현할 수 있을지 확신하지 못합니다.

미리 감사드립니다. 아리엘

+0

제안 좋다. 나는 onTouchListener를 직접 mapView에 보내고 doubletap을 오버라이드한다. – Ifor

답변

0

내가 OsmMap에 약간의 터치 기능을 추가하고 싶었

, 나는 또한 탭을 발견하고 스크롤 등이 이미 사용되었다.

그래서 모든 제 동작을 시작하려면 세 손가락으로 길게 눌러야합니다. 제스처는 세 손가락으로 길게 누른 다음 세 손가락으로 왼쪽 또는 오른쪽 또는 길게 누르십시오. 그런 식으로 제 제스처는 정상적인지도 제스처를 방해하지 않았습니다.

내 앱은 3 개의 손가락 긴 절이 감지 된 후에도 터치 이벤트를 사용해야했습니다. 그렇지 않으면 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이어야합니다.

당신은 다음 mapwith에 MapEventsOverlay을 추가해야합니다 링크에서

//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