android中的多个叠加项

时间:2010-03-19 18:28:52

标签: android map overlay

我似乎在使用ItemizedOverlay和OveralyItems时遇到了问题。

我可以让第一个overlayItem出现在地图上,但之后没有任何项目。

代码示例已开启: http://www.anddev.org/multiple_overlay_items-t12171.html

此处快速概述:

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

如何使用的样本:

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

第一个标记出现在地图上,但如果我再添加它们就不显示了? populate()方法有问题吗?我尝试在添加所有标记后手动调用它,但它仍然没有帮助。如果你知道可能出现什么问题,请说出来。

3 个答案:

答案 0 :(得分:5)

检查此示例project是否有帮助。多次添加多个addOverlay()

答案 1 :(得分:1)

我的代码看起来几乎和你的完全一样,除了我没有在addOverlay函数中调用setLastFocusedIndex。尝试对其进行评论,看看它是否有效。

答案 2 :(得分:1)

我终于找到了答案。我很惭愧承认它,但问题不在于没有绘画的项目,而是在我看不到它们在屏幕上......两个项目的位置应该几乎相同......但其中一个是计算出一个bug并被移到了世界的中途。

所以我从不打扰看或缩小......当我发现我的另一个标记坐在Barren的海边时:)感谢所有试图帮助我的人......哦,上面的代码有效:)