2014-11-23 3 views
5

Vorrei utilizzare Picasso per recuperare l'immagine Bitmap da utilizzare come icona di un indicatore, ma non sono sicuro di come farlo. Se sto usando Picasso per inserire un'immagine in una visualizzazione delle immagini, so che posso usare:Come posso usare Picasso per aggiungere un'icona a Marker?

Picasso.with(MainActivity.this).load(URL).into(photo_imageview); 

Naturalmente questo non funziona se lo passo a .icon()

C'è un modo semplice per raggiungere Questo?

Grazie a chiunque dia un'occhiata a questo!

risposta

22

Picasso fornisce un'interfaccia generica Target che è possibile utilizzare per implementare la propria destinazione dell'immagine. In particolare, è necessario eseguire l'override di onBitmapLoaded per popolare il proprio indicatore.

Un'implementazione di base è riportata di seguito.

public class PicassoMarker implements Target { 
    Marker mMarker; 

    PicassoMarker(Marker marker) { 
     mMarker = marker; 
    } 

    @Override 
    public int hashCode() { 
     return mMarker.hashCode(); 
    } 

    @Override 
    public boolean equals(Object o) { 
     if(o instanceof PicassoMarker) { 
      Marker marker = ((PicassoMarker) o).mMarker; 
      return mMarker.equals(marker); 
     } else { 
      return false; 
     } 
    } 

    @Override 
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
     mMarker.setIcon(BitmapDescriptorFactory.fromBitmap(bitmap)); 
    } 

    @Override 
    public void onBitmapFailed(Drawable errorDrawable) { 
    } 

    @Override 
    public void onPrepareLoad(Drawable placeHolderDrawable) { 

    } 
} 

Si potrebbe usare in questo modo -

marker = new PicassoMarker(myMarker); 
Picasso.with(MainActivity.this).load(URL).into(marker); 

Nota Picasso detiene solo una settimana riferimento al Target passato a into. Pertanto, è necessario che il riferimento esista finché l'immagine non viene caricata per evitare che i richiami vengano eliminati dal garbage collector.

+0

Come si fa a farlo? – WeVie

+0

Vedi modifica, fornisco un'implementazione di base – iagreen

+0

Hey @iagreen Mostra solo il marcatore Android predefinito non l'immagine, per favore aiutami per questo. E il metodo onBitmapLoaded non è stato chiamato. –

0

controllare questo codice di esempio mappe Google, è possibile trovare un'implementazione InfoWindowAdapter per realizzarla: googlemaps/android-samples