2010-03-19 6 views
1

ItemizedOverlay 및 OveralyItems를 사용하여 문제가있는 것 같습니다.android의 여러 오버레이 항목

첫 번째 overlayItem을지도에 표시 할 수는 있지만 이후에는 항목이 표시되지 않습니다. 여기 http://www.anddev.org/multiple_overlay_items-t12171.html

빠른 개요 :이 사용되는 방법

public class Markers extends ItemizedOverlay { 

private Context ctx; 

private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 

public Markers(Drawable defaultMarker, Context cont) { 

     super(boundCenterBottom(defaultMarker)); 
     this.ctx = cont; 
     // TODO Auto-generated constructor stub 
} 

@Override 
protected OverlayItem createItem(int i) { 
     // TODO Auto-generated method stub 
     return mOverlays.get(i); 
} 

@Override 
public boolean onTap(GeoPoint p, MapView mapView) { 
     // TODO Auto-generated method stub 
     return super.onTap(p, mapView); 
} 


@Override 
protected boolean onTap(int index) { 
     // TODO Auto-generated method stub 
     Toast.makeText(this.ctx, mOverlays.get(index).getTitle().toString()+", Latitude: "+mOverlays.get(index).getPoint().getLatitudeE6(), Toast.LENGTH_SHORT).show(); 
     return super.onTap(index);   
} 

@Override 
public int size() { 
     // TODO Auto-generated method stub 
     return mOverlays.size(); 
} 

public void addOverlay(OverlayItem item) { 
     mOverlays.add(item); 
     setLastFocusedIndex(-1); 
     populate(); 

} 

public void clear() { 
     mOverlays.clear(); 
     setLastFocusedIndex(-1); 
     populate(); 
} 
} 

샘플 :

코드 샘플에

Markers usersMarker = new Markers(user,overview.this); 
GeoPoint p = new GeoPoint((int) (lat * 1E6),(int) (lon * 1E6)); 
OverlayItem item = new OverlayItem(p,userData[0],userData[3]); 
item.setMarker(this.user); 
usersMarker.addOverlay(item); 

첫 번째 마커가지도에 있지만, 경우에 나타 I 더 이상 추가하지 않으면 나타나지 않습니까? populate() 메소드에 문제가 있습니까? 모든 마커를 추가 한 후 수동으로 호출했지만 여전히 도움이되지 않았습니다. 제발, 만약 당신이 무엇이 잘못 될 수 있었는지 알았 으면, 그렇게 말하십시오.

+0

mapview를 사용하여 activity에 invalidate() 또는 postInvalidate()를 호출합니까? – Sephy

+0

예, 오버레이를 매핑하기 위해 ItemizedOverlay를 추가 한 후 무효화를 호출하지만 ... 도움이되지 않습니다. – Bostjan

답변

1

나는 마침내 대답을 찾았습니다. 나는 그것을 인정하는 것을 아주 부끄러워하지만 문제는 그림이 아닌 항목에 있지만 화면에는 보이지 않는다는 것입니다. 2 항목의 위치는 거의 동일하다고 가정되었지만 그 중 하나는 버그로 계산되어 전 세계 절반으로 이동했습니다.

그래서 나는 보지도 않았고 축소도 신경 쓰지 않았습니다 ... 내가 불모의 바다에 어딘가에 앉아있는 다른 마커를 발견했을 때 :) 저를 도우 려던 모든 사람들에게 감사드립니다 ... 오, 위의 코드가 작동합니다 :)

5

이 샘플을 확인하면 project 도움이됩니다. 여러 번 add urllay()를 여러 번 추가하십시오.

1

addOverlay 함수에서 setLastFocusedIndex를 호출하지 않는다는 점을 제외하고는 거의 동일한 코드를 사용하고 있습니다. 댓글을 달고 작동하는지 확인해보십시오.