2012-11-12 5 views
0

내 MapActivity의 onTap 함수는지도를 클릭하는 요소에 관계없이 항상 0을 반환합니다. 다음은 onTap 함수입니다.Android MapActivity onTap 인덱스는 항상 0을 반환합니다.

@Override 
protected boolean onTap(int i) { 

    OverlayItem item = myOverlays.get(i); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(context); 

    dialog.setTitle(item.getTitle()); 
    dialog.show(); 

    return true; 
} 

//myOverlays is a ArrayList<OverlayItem> 

그러나. 함수가 실행될 때마다 색인 (i)은 항상 0입니다. 중단 점과 로그 디버깅을 모두 사용하여이를 확인했습니다. 이 함수를 사용하는 동안 올바른 Dialog 내용을 수신하기 때문에 다소 당황 스럽습니다.

item.getTitle()myOverlays.get (i)를 의미하는 항목 객체가 올바른 의미, 클릭 한 요소에 대한 적절한 제목을 얻는다도 인덱스 불구하고 다른 개체를 얻을 어떻게 든 할 수있다 (i)는 항상 0입니다. 이것은 생각이 들게합니다.

나를 계몽하는 사람은 누구입니까? 에뮬레이터에서 "클릭"이 수행된다는 사실과 관련된 문제 일 수 있다고 생각하십니까?

미리 감사드립니다. Krys

+0

코드를 게시하십시오. 그것은 내 말 잘 작동합니다. – slybloty

답변

1

오버레이를 만들고 항목을 추가 할 때 코드를 표시하지 않기 때문에 추측입니다.

ItemizedOverlays을 복수 추가하고 각 오버레이에 하나의 항목 만 추가했을 가능성이 있습니다. 뭔가 같은 다음과

MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...); 
for(i=0; i<count; i++){ 
    OverlayItem oi = new OverlayItem(...); 
    itemizedOverlay.add(oi); 
} 
mapView.getOverlays().add(itemizedOverlay); 

:

for(i=0; i<count; i++){ 
    MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...); 
    OverlayItem oi = new OverlayItem(...); 
    itemizedOverlay.add(oi); 
    mapView.getOverlays().add(itemizedOverlay); 
} 
여러 오버레이있을 것이다 위의 코드

, 위치에 하나 개의 항목을 하나 하나 당신이 그런 짓을해야 효율성을 0

위의 코드를 사용하면 여러 항목이있는 오버레이가 하나만 있습니다.

감사합니다.

+0

당신은 완전히 옳았습니다. 내가 왜 그렇게 일찍 보지 못했는지 나는 알 수 없습니다. 무리 감사! :) – krystah

관련 문제