OSMdroid将自定义图标添加到ItemizedOverlay

bub*_*bly 6 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);
Run Code Online (Sandbox Code Playgroud)

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

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

mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*ckT 18

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

mItems = new ArrayList<OverlayItem>();
Run Code Online (Sandbox Code Playgroud)

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

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

mymarker是drawables文件夹中的.png.

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

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);
Run Code Online (Sandbox Code Playgroud)

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, newMarker, new Glistener(), mResourceProxy);
Run Code Online (Sandbox Code Playgroud)

newMarker和以前一样