Reputation: 1221
What i do is to take data from an xml file and then using a Custom ItemizedOverlay i add the items.
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;
}
While i am on the UI Thread i use a while() loop to print :
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);
Having to display only five items the loop stops while j < 5 . The problem is that it only displays the last item from the xml data.
Upvotes: 0
Views: 334
Reputation: 7071
Step1: Add this java file..
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();
}
}
Step2: Into your 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_);
Upvotes: 2
Reputation: 109247
You missed a loop for int i
in your callme(List<Places> result)
method
Update:
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);
Use the above code remove your code what have you post with question and let mek now what happen..
Upvotes: 1