Multiple overlay items in android

2019-03-14 09:44发布

I seem to be having a problem with using ItemizedOverlay and OveralyItems in it.

I can get the first overlayItem to appear on the map but not any items after that.

Code sample is on: http://www.anddev.org/multiple_overlay_items-t12171.html

Quick overview here:

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();
 }
}

Samples of how it's used:

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); 

the first marker shows up on the map but if I add any more they don't show up? Is there a problem with the populate() method? I tried calling it manually after adding all markers but it still didn't help. Please, if you have any idea what could be wrong, say so.

3条回答
小情绪 Triste *
2楼-- · 2019-03-14 10:07

I have working code that looks almost exactly like yours, except I do not call setLastFocusedIndex in my addOverlay function. Try commenting it out and see if it works.

查看更多
倾城 Initia
3楼-- · 2019-03-14 10:14

I have finally found an answer. I'm quite ashamed to admit it but the problem was not in the items not drawing but in me not seeing them on screen....The locations for the 2 items were supposed to be nearly identical...but one of them was calculated with a bug and was moved halfway round the world.

So I never bothered to look or zoom out...when I did i found my other marker sitting somewehre in the Barren's sea :) Thanks to all who tried to help me...oh and the above code works :)

查看更多
Juvenile、少年°
4楼-- · 2019-03-14 10:31

check this sample project it helps. add multiple addOverlay()s on ur multiple times

查看更多
登录 后发表回答