¿Cómo puedo utilizar Picasso para agregar icono a Marcador?
Me gustaría usar Picasso para recuperar la imagen de mapa de bits para usarla como un icono de marcador, pero no estoy seguro de cómo hacerlo. Si estoy usando Picasso para insertar una imagen en una vista de imagen, sé que puedo usar:
Picasso.with(MainActivity.this).load(URL).into(photo_imageview);
Por supuesto esto no funcionará si lo paso a .icon()
- ¿Cómo puedo utilizar un color como imagen de marcador de posición con Picasso?
- Cargar mapa de bits con RGB_565 a través de Picasso
- ¿Cómo uso la caché de disco en Picasso?
- Google Map personaliza la imagen de marcador con picasso, se actualiza dos veces para mostrar la imagen
- Android picasso, razón de error
¿Hay una manera simple de lograr esto?
Gracias a cualquiera que eche un vistazo a esto!
- Picasso Cargar imagen desde el sistema de archivos
- ¿Puedo cargar una imagen con Picasso en la barra de acción?
- Cargando varias imágenes con Picasso en el fondo
- Cómo recuperar la rotación de miniaturas
- Android Picasso Configurar el tamaño de LruCache
- Descargar múltiples imágenes de Picasso en Android
- Cómo agregar cuadros a la imagen?
- Picasso java.lang.IllegalStateException: La llamada al método no debería ocurrir desde el hilo principal
Picasso proporciona una interfaz genérica de Target
que puede utilizar para implementar su propio destino de imágenes. Específicamente, querrá anular onBitmapLoaded
para rellenar su marcador.
A continuación se presenta una implementación básica.
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) { } }
Lo usarías así –
marker = new PicassoMarker(myMarker); Picasso.with(MainActivity.this).load(URL).into(marker);
Nota Picasso solo contiene una referencia de la semana al Target
pasado a into
. Por lo tanto, la referencia de marker
necesita existir hasta que se cargue la imagen para evitar que las devoluciones de llamada sean limpiadas por el recolector de basura.
Compruebe este código de ejemplo de google maps, puede encontrar una implementación de InfoWindowAdapter
para lograrlo: googlemaps / android-samples