有没有人设法ItemizedOverlays
在Android Beta 0.9中使用?我不能让它工作,但我不确定我是否做错了或者这个功能还没有.
我一直在尝试使用ItemizedOverlay
和OverlayItem
类.它们的目的是模拟地图标记(如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); Listoverlays = 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.
为了完整起见,我将重复关于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.