OSMdroid将自定义图标添加到ItemizedOverlay

时间:2012-05-10 11:30:14

标签: android itemizedoverlay osmdroid

我正在使用ItemizedIconOverlay类,我目前正在地图上显示事件以及具有相同默认图标的用户位置。

如何更改每个叠加层的图标集?

是否有类似于google.maps示例的内容:

    drawable = getResources().getDrawable(R.drawable.marker);
    drawable3 = getResources().getDrawable(R.drawable.disruption);
    drawable2 = getResources().getDrawable(R.drawable.marker_me);

    itemizedOverlay = new MyItemizedOverlay(drawable, mapView);
    itemizedOverlay2 = new MyItemizedOverlay(drawable2, mapView);
    itemizedOverlay3 = new MyItemizedOverlay(drawable3, mapView);

我让每个itemizedOverlay都有自己的标记......

如何使用Open Street Maps执行此操作?

mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);

感谢您的帮助,遗憾的是,这个开源项目无法在线提供支持......

1 个答案:

答案 0 :(得分:18)

据推测,您的mItems是OverlayItems的ArrayList,其创建方式如下:

mItems = new ArrayList<OverlayItem>();

在此列表中,您将添加单独的OveralyItems,因此当您创建每个项目时,您可以这样做,在将标记添加到列表之前设置标记:

OverlayItem olItem = new OverlayItem("Here", "SampleDescription", point);
Drawable newMarker = this.getResources().getDrawable(R.drawable.mymarker);
olItem.setMarker(newMarker);
mItems.add(olItem);

其中mymarker是drawables文件夹中的.png。

更新 - 设置整个叠加层的默认标记,更改

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, newMarker, new Glistener(), mResourceProxy);

其中newMarker与之前一样