2012-05-10 8 views
5

Sto utilizzando la classe ItemizedIconOverlay e attualmente sto visualizzando eventi sulla mappa insieme alla posizione dell'utente con la stessa icona predefinita.OSMdroid aggiunge icone personalizzate a ItemizedOverlay

Come modificare il set di icone per ciascun overlay?

C'è qualcosa di simile all'esempio 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); 

avevo ogni itemizedOverlay hanno il proprio marcatore ...

Come faccio a fare questo con mappe Open Street?

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

Grazie per il vostro aiuto e la sua un peccato non molto sostegno è disponibile online per questo progetto open source ...

risposta

17

Presumibilmente i tuoi mItems è un ArrayList di OverlayItems creato come:

mItems = new ArrayList<OverlayItem>(); 

A questo elenco si aggiungeranno singoli OveralyItems, quindi quando crei ciascun elemento puoi farlo in questo modo, impostando il marcatore prima di aggiungerlo all'elenco:

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

dove mymarker è un file .png nella cartella dei disegni.

Aggiornamento - per impostare marcatore di default per tutta la sovrapposizione, cambiare

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

a

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

dove newMarker è come prima

+0

Grazie ha funzionato! – bubbly

+0

Ma posso aggiungere un indicatore predefinito per l'intero overlay? Come itemizedOverlay = new MyItemizedOverlay (drawable, mapView); e poi ogni elemento aggiunto a quella sovrapposizione ottiene il marcatore specifico. – bubbly

+1

Sì, sembra che sia disponibile un altro costruttore che accetta anche un marcatore di default. Modificherò la mia risposta con un aggiornamento – NickT

Problemi correlati