OSMdroid add custom icons to ItemizedOverlay

bubbly picture bubbly · May 10, 2012 · Viewed 15.3k times · Source

I am using ItemizedIconOverlay class and I'm currently displaying events on the map along with the user's position with the same default icon.

How do I change the icon set for each overlay?

Is there something similar to the google.maps example:

    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);

I had each itemizedOverlay have its own marker...

How do I do this with Open Street Maps?

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

Thank you for your help and its a shame not much support is available online for this open source project ...

Answer

NickT picture NickT · May 10, 2012

Presumably your mItems is an ArrayList of OverlayItems created like:

mItems = new ArrayList<OverlayItem>();

To this list you will be adding individual OveralyItems, so when you create each item you can do it like this, setting the marker before you add it to the list:

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

where mymarker is a .png in your drawables folder.

Update - to set default marker for whole overlay, change

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

to

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

where newMarker is as before