我按照Google Dev上的教程創建ItemSizedOverlay。我的想法是從一個名爲列表的ArrayList中獲取多個位置。所以我用一個for()來讀出ArrayList列表,並將位置添加到ItemSizedOverlay,名爲PowerStationOverlay - 但奇怪的是,這給我只有我的列表的第一個條目 - 其他沒有顯示在地圖上...ItemizedOverlay僅顯示FIRST ENTRY
Id我讀的靜態位置就像在教程中 - 它工作正常,但是當我通過ArrayList和for()應該遍歷它的位置讀取 - 然後它不工作。
我很困惑,我不明白這個 - 什麼是錯的?
保護無效的onCreate(捆綁savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.powerstation);
MapView mapView = (MapView) findViewById(R.id.mapview);
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.icon);
PowerStationOverlay itemizedoverlay = new PowerStationOverlay(drawable);
ArrayList<locations.PowerStation> list = new ArrayList<locations.PowerStation>();
list = myDbHelper.getPowerStations();
int countPowerStations = list.size();
GeoPoint gp;
for(locations.PowerStation ps : list){
int lat = (int) ps.getLat();
int lon = (int) ps.getLon();
gp = new GeoPoint(lat, lon);
itemizedoverlay.addOverlay(new OverlayItem(gp, "Test", "Test"));
}
mapOverlays.add(itemizedoverlay);
}
這裏是ItemSizedOverlay稱爲PowerStationOverlay。
public class PowerStationOverlay extends ItemizedOverlay<OverlayItem>
{
Context mContext;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public PowerStationOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public PowerStationOverlay(Drawable defaultMarker, Context context) {
super(defaultMarker);
mContext = context;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
@Override
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
return true;
}
}
嗯...那不適合我 - 對我的項目結構。奇怪的是 - 當我手動填寫數組列表時,所有標記都顯示正確。但是當我使用我的方法來填充數組列表時 - 哪裏是100%確定3項 - 在地圖上只顯示一個標記。 – user753654 2011-05-15 12:38:26
@CommonsWare這似乎並沒有解決我的問題。現在我在手動添加所有項目後調用手動填充。仍然只顯示一個項目。 – 2012-02-29 07:57:35