开发者社区> 问答> 正文

在Android Beta 0.9中使用ItemizedOverlay和OverlayItem

是否有人设法ItemizedOverlays在Android Beta 0.9中使用?我无法使其正常工作,但是我不确定是否做错了什么或该功能尚不可用。

我一直在尝试使用ItemizedOverlay和OverlayItem类。它们的预期目的是模拟地图标记(如Google Maps Mashups中所示),但是在将它们显示在地图上时遇到了问题。

我可以使用类似的技术添加自己的自定义叠加层,只是ItemizedOverlays那是行不通的。

一旦实现了自己的ItemizedOverlay(并重写createItem),创建类的新实例就可以了(我可以从中提取OverlayItems),但是将其添加到地图的Overlay列表中并不能使它看起来像应该的那样。

这是我用来将ItemizedOverlay类作为Overlayon 添加到我的代码MapView。


// Add the ItemizedOverlay to the Map
private void addItemizedOverlay() {
  Resources r = getResources();
  MapView mapView = (MapView)findViewById(R.id.mymapview);
  List<Overlay> overlays = mapView.getOverlays();

  MyItemizedOverlay markers = new MyItemizedOverlay(r.getDrawable(R.drawable.icon));
  overlays.add(markers);

  OverlayItem oi = markers.getItem(0);
  markers.setFocus(oi);
  mapView.postInvalidate();
}

其中MyItemizedOverlay定义为:

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
  public MyItemizedOverlay(Drawable defaultMarker) {
    super(defaultMarker);
    populate();
  }

  @Override
  protected OverlayItem createItem(int index) {
    Double lat = (index+37.422006)*1E6;
    Double lng = -122.084095*1E6;
    GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());

    OverlayItem oi = new OverlayItem(point, "Marker", "Marker Text");
    return oi;
  }

  @Override
  public int size() {
    return 5;
  } 
}

展开
收起
Puppet 2020-01-19 09:13:53 345 0
1 条回答
写回答
取消 提交回答
  • 尝试:

    
    Drawable defaultMarker = r.getDrawable(R.drawable.icon);
    
    defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
        defaultMarker.getIntrinsicHeight());
    
    MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
    overlays.add(markers);
    
    2020-01-19 09:14:10
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载