ItemizedOverlay仅显示FIRST ENTRY

| 我按照Google Dev上的教程创建了ItemSizedOverlay。我的想法是从名为list的ArrayList中获得几个职位。因此,我使用了一个for()来读取ArrayList列表,并将位置添加到名为PowerStationOverlay的ItemSizedOverlay中-但奇怪的是,这仅给了我列表的第一个条目-其他条目未显示在地图上。 .. 我像本教程一样在静态位置阅读-它可以正常工作,但是当我通过ArrayList和for()应该在其上进行迭代的位置阅读-则它不起作用。 我很困惑,我不明白这一点-怎么了? 受保护的void onCreate(Bundle 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); } 这是称为PowerStationOverlay的ItemSizedOverlay。
    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;
}

}
    
已邀请:
请勿在每次通话ѭ3call时都拨打
populate()
。一旦您的
ArrayList
被填充,就呼叫
populate()
。这是一个演示此的示例项目。     

要回复问题请先登录注册