在 Android Beta 0.9 中使用 ItemizedOverlay 和 OverlayItem
Posted
技术标签:
【中文标题】在 Android Beta 0.9 中使用 ItemizedOverlay 和 OverlayItem【英文标题】:Using ItemizedOverlay and OverlayItem In Android Beta 0.9 【发布时间】:2010-09-06 18:47:34 【问题描述】:有没有人设法在 android Beta 0.9 中使用ItemizedOverlays
?我无法让它工作,但我不确定我是否做错了什么,或者这个功能是否还不可用。
我一直在尝试使用 ItemizedOverlay
和 OverlayItem
类。他们的预期目的是模拟地图标记(如在 Google Maps Mashups 中所见),但我在让它们出现在地图上时遇到了问题。
我可以使用类似的技术添加自己的自定义叠加层,只是 ItemizedOverlays
不起作用。
一旦我实现了自己的ItemizedOverlay
(并覆盖了createItem
),创建我的类的新实例似乎可以工作(我可以从中提取OverlayItems
)但将其添加到地图的Overlay
列表并没有使其显示为应有的样子。
这是我用来将ItemizedOverlay
类作为Overlay
添加到我的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;
【问题讨论】:
【参考方案1】:为了完整起见,我将在 Android Groups here 重复关于 Reto 帖子的讨论。
看来,如果您在可绘制对象上设置边界,它就可以解决问题:
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);
顺便说一句,上面的内容是从the demo at MarcelP.info中无耻地翻出来的。另外,这里是good howto。
【讨论】:
是我还是你最后一个喜欢是空的?【参考方案2】:试试:
Drawable defaultMarker = r.getDrawable(R.drawable.icon);
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
defaultMarker.getIntrinsicHeight());
MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);
【讨论】:
以上是关于在 Android Beta 0.9 中使用 ItemizedOverlay 和 OverlayItem的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android smack 4.2.0-beta1 中使用 MucEnterConfiguration?
如何在市场上发布私有 Beta Android App? [关闭]
如何解决“在Android独立路径中找到多个文件'project.properties'”Android Studio 3.0 Beta-6中的错误