1

MapView (Google)를 사용하고 일부 오버레이를 추가합니다. 나는 다음과 같습니다 내 자신의 오버레이 클래스 사용 중 단지 1 내가 축소 내 모든 아이템이 같은 위치에 있어야하고 이미지를 탭하게되면ItemizedOverlay의 onTap (int i) 이벤트 <OverlayItem>은 1 개의 항목에만 발생합니다.

public class MyOverlay extends ItemizedOverlay<OverlayItem> 

, 내가 할 ONTAP 이벤트를 모든 항목이 탭 위치에 있습니다.

내가 탭하는지도의 위치 아래에있는 모든 항목에 대해 onTap 이벤트를 가져 오거나 내가 누르는 특정 직사각형에서 모든 항목에 대해지도를 요청할 수있는 기능을 원합니다.

@Override 
protected boolean onTap(int i) 
{     
    super.onTap(i); 
    return false;   
} 

각 오버레이 만 1 탭을 얻을 :

이 디버깅에 내 코드입니다.

가능합니까? 방법?

감사합니다.

답변

0

한 가지 방법은 이것이다 : (이것은 의사 코드가 있습니다)

// Over ride the onTouchEvent 
    @Override 
    public boolean onTouchEvent(MotionEvent event, final MapView mapView) { 
     final int action=event.getAction(); 
     final int x = (int)event.getX(); 
     final int y = (int)event.getY(); 
     if (action == MotionEvent.ACTION_DOWN) { 
     // get the zoom level 
     zoomLevel = mapView.getZoomLevel(); 

     if(zoomLevel > appropriateZoom) 
     { 
       if(items != null) { 
       for(int i = 0; i < items.size(); i++){ 
        OverlayItem item = items.get(i); 
        Point mp = new Point(0,0); 
        mapView.getProjection().toPixels(item.getPoint(), mp); 
        xDragTouchOffset=x-mp.x; 
        yDragTouchOffset=y-mp.y; 
        if (hitTest(item, marker, x-(mp.x-(xDragImageOffset+xDragTouchOffset*2)), y-(mp.y-((yDragImageOffset/2)+yDragTouchOffset)))) { 
        // This item has been tapped. Do what you want here. 
     } 

     } 

이것은 단지 당신이 시작하는 아이디어/힌트입니다.

+0

어떻게하면 각 OverlayItem의 onTap에 등록 할 수 있습니까? 이것은 아마도 확대 ​​/ 축소 상황을 계산하기 시작하는 것보다 낫을 것입니다 .... – iAndroid

+0

OverlayItem은 onTap을 지원하지 않지만 [Overlay] (http://code.google.com/android/add-ons/google-apis/reference/com /google/android/maps/Overlay.html) 않습니다. – Reno