当前位置:  开发笔记 > 编程语言 > 正文

在Android Beta 0.9中使用ItemizedOverlay和OverlayItem

如何解决《在AndroidBeta0.9中使用ItemizedOverlay和OverlayItem》经验,为你挑选了1个好方法。

有没有人设法ItemizedOverlays在Android Beta 0.9中使用?我不能让它工作,但我不确定我是否做错了或者这个功能还没有.

我一直在尝试使用ItemizedOverlayOverlayItem类.它们的目的是模拟地图标记(如Google Maps Mashups中所示),但我遇到了让它们出现在地图上的问题.

我可以使用类似的技术添加自己的自定义叠加层,它只是ItemizedOverlays不起作用.

一旦我实现了我自己的ItemizedOverlay(并重写了createItem),创建我的类的新实例似乎工作(我可以从中提取OverlayItems),但将其添加到地图的叠加列表并不会使它显示为应该.

这是我用来将createItem类作为Overlay 添加到我的代码的代码OverlayItems.

// Add the ItemizedOverlay to the Map
private void addItemizedOverlay() {
  Resources r = getResources();
  MapView mapView = (MapView)findViewById(R.id.mymapview);
  List 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();
}

在哪里Overlay定义为:

public class MyItemizedOverlay extends ItemizedOverlay {
  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;
  } 
}

小智.. 44

为了完整起见,我将重复关于Reto在Android群组上的帖子的讨论.

似乎如果你在drawable上设置边界就可以了:

Drawable defaultMarker = r.getDrawable(R.drawable.icon);

// You HAVE to specify the bounds! It seems like the markers are drawn
// through Drawable.draw(Canvas) and therefore must have its bounds set
// before drawing.
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);

顺便说一句,上面的内容是从MarcelP.info的演示中无耻地撕掉的.另见这里一个很好的howto.



1> 小智..:

为了完整起见,我将重复关于Reto在Android群组上的帖子的讨论.

似乎如果你在drawable上设置边界就可以了:

Drawable defaultMarker = r.getDrawable(R.drawable.icon);

// You HAVE to specify the bounds! It seems like the markers are drawn
// through Drawable.draw(Canvas) and therefore must have its bounds set
// before drawing.
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);

顺便说一句,上面的内容是从MarcelP.info的演示中无耻地撕掉的.另见这里一个很好的howto.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有