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() 메소드에 문제가 있습니까? 모든 마커를 추가 한 후 수동으로 호출했지만 여전히 도움이되지 않았습니다. 제발, 만약 당신이 무엇이 잘못 될 수 있었는지 알았 으면, 그렇게 말하십시오.
mapview를 사용하여 activity에 invalidate() 또는 postInvalidate()를 호출합니까? – Sephy
예, 오버레이를 매핑하기 위해 ItemizedOverlay를 추가 한 후 무효화를 호출하지만 ... 도움이되지 않습니다. – Bostjan