0

私がしていることは、xmlファイルからデータを取得し、カスタムItemizedOverlayを使用してアイテムを追加することです。

public CustomItemizedOverlay callme(List<Places> result){

    Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);

    latitudeE6  = result.get(i).latitude;
    longitudeE6 = result.get(i).longitude;

    GeoPoint point = new GeoPoint(latitudeE6a, longitudeE6a);                               
    OverlayItem overlayitem = new OverlayItem(point, result.get(i).title, result.get(i).text);

    CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable);

    itemizedOverlay.addOverlay(overlayitem);//add point

    i++;

    latitudeE6 =0;
    longitudeE6 =0;
    return itemizedOverlay;

}

UIスレッドを使用している間、while()ループを使用して次のように出力します。

int j=0;
List<Overlay> mapOverlays = mapView.getOverlays();

while( j < 5 ) {
    test1 = callme(result1);                                
    mapOverlays.add(test1);                                 

    j++;
} 

MapController mapController = mapView.getController();
mapController.setZoom(12);

j <5の間、ループは5つのアイテムだけを表示する必要があります。問題は、xmlデータの最後の項目のみが表示されることです。

4

2 に答える 2

2

ステップ1:このJavaファイルを追加します。

public class MapItemizedOverlay extends ItemizedOverlay<OverlayItem>
{
public static boolean isRouteSelecting;
public static ArrayList<GeoPoint> geoPoints;

private GeoPoint geoPoint_;
private ArrayList<OverlayItem> overlayItems_ = new ArrayList<OverlayItem>();

public MapItemizedOverlay(Drawable defaultMarker)
{
    super(boundCenterBottom(defaultMarker));
    // TODO Auto-generated constructor stub
}

public void addOverlay(OverlayItem overlayItem)
{
    overlayItems_.add(overlayItem);
    populate();
}

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

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

ステップ2:MapActivityに...(oncreate)

mapItemizedOverlay_ = new MapItemizedOverlay(drawable_);

                     for(int i = 0; i < yourList.size(); i++)
            {

                GeoPoint geoPoint = new            GeoPoint(Latitude, Longitude);
                OverlayItem overlayItem = new OverlayItem(geoPoint, busStop.getStopName(), "");
                mapItemizedOverlay_.addOverlay(overlayItem);
            }
            drawable_ = this.getResources().getDrawable(R.drawable.ic_launcher);
            mapView_.getOverlays().add(mapItemizedOverlay_);
于 2012-05-08T08:43:45.983 に答える
1

メソッドの for ループint iを見逃しましたcallme(List<Places> result)

アップデート:

List<Overlay> mapOverlays = mapView.getOverlays();

  for(int i=0;i<result1.size();i++)
   {
    Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);
    latitudeE6  = result1.get(i).latitude;
    longitudeE6 = result1.get(i).longitude;

    GeoPoint point = new GeoPoint(latitudeE6a,longitudeE6a);                                
    OverlayItem overlayitem = new OverlayItem(point, result1.get(i).title, result1.get(i).text);
    CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable);           
    itemizedOverlay.addOverlay(overlayitem);        //add point

     mapOverlays.add(itemizedOverlay);  
    }           
    latitudeE6 =0;
    longitudeE6 =0;                     
MapController mapController = mapView.getController();
mapController.setZoom(12);

上記のコードを使用して、質問で投稿したコードを削除し、何が起こるか..

于 2012-05-08T08:34:14.027 に答える