2012-09-19 2 views
0

지도 오버레이를 정의했으며 문제없이 마커를 표시 할 수 있습니다. 나는 지금 하나를 살짝 잡을 때 일어날 일을 얻으려고 노력하고 있지만, 그 사건은 결코 발사되는 것처럼 보이지 않습니다. 나는 분명히 뭔가를 놓치고있어 확신 해요 ...ItemizedOverlay OnTap()이 실행되지 않음

public class MapBlobCollection extends ItemizedOverlay<OverlayItem> { 

     @SuppressWarnings("serial") 
     public class ItemTappedEvent extends EventObject 
     { 
      public ItemTappedEvent(int itemIndex) { 
       super(itemIndex); 
      } 
     } 

     private ArrayList<OverlayItem> myOverlays ; 

     public MapBlobCollection(Drawable defaultMarker) { 
      super(boundCenterBottom(defaultMarker)); 
      myOverlays = new ArrayList<OverlayItem>(); 
      populate(); 
     } 

     public void addOverlay(OverlayItem overlay){ 
      myOverlays.add(overlay); 
      populate(); 
     } 

     @Override 
     protected OverlayItem createItem(int i) { 
      return myOverlays.get(i); 
     } 

     // Removes overlay item i 
     public void removeItem(int i){ 
      myOverlays.remove(i); 
      populate(); 
     } 

     // Returns present number of items in list 
     @Override 
     public int size() { 
      return myOverlays.size(); 
     } 


     public void addOverlayItem(OverlayItem overlayItem) { 
      myOverlays.add(overlayItem); 
      populate(); 
     } 


     public void addOverlayItem(int lat, int lon, String title) { 
      try { 
       GeoPoint point = new GeoPoint(lat, lon); 
       OverlayItem overlayItem = new OverlayItem(point, title, null); 
       addOverlayItem(overlayItem);  
      } catch (Exception e) { 
       // TODO: handle exception 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     protected boolean onTap(int index) { 
      super.onTap(index); 
      Log.d("TESTING","Triggering tap event on " + Integer.toString(index)); 
      EventManager.triggerEvent(this, new ItemTappedEvent(index)); 
      return true; 
     } 
} 

기본적으로 디버그 로그 항목은 기록되지 않고 이벤트는 실행되지 않습니다.

또한 mapview 자체가 (내게 여분의 코드가 없으면) 주위를 둘러 보지 않고 setBuitInZoomControls (true)를 설정 했음에도 불구하고 이들 중 하나는 표시되지 않습니다. 따라서 아마도 mapview 자체 잘못 됐어?

맵뷰 MapView는 다음과 같이 레이아웃에 정의되어

<com.google.android.maps.MapView 
android:id="@+id/indexMapView" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:apiKey="@string/mapskey_release"/> 

그리고 내가 어떤 추첨 이벤트 또는 아무것도를 오버라이드 (override) 아니에요 ...

답변

1

난 당신이

android:clickable="true" 
를 추가 할 필요가 생각

와지도보기

+0

그것은 그 것이었다 - 나는 그것이 단순 할 것이라고 알았다! – James

+0

대개! 다행히 도울 수있어. – ePeace

0

수퍼 기능을 끝까지 이동해보십시오.

@Override 
    protected boolean onTap(int index) { 
     Log.d("TESTING","Triggering tap event on " + Integer.toString(index)); 
     EventManager.triggerEvent(this, new ItemTappedEvent(index)); 
     return super.onTap(index); 
    } 
+0

제안에 감사드립니다 - ePeace는 아래의 원인을 발견했습니다 :) – James