Android Google Map пользовательский маркер загрузить изображение с URL - PullRequest
1 голос
/ 04 ноября 2019

Здравствуйте, я использую google map api v2, и я создал собственный класс маркеров с именем FirmaMarker, и я хочу отобразить его с изображением по URL-адресу, который я получаю из базы данных.
Я использую Picasso для загрузки изображения, но проблема в том,этот маркер создается перед извлечением изображения, поэтому я просто создаю маркеры без изображения, и пользователю нужно несколько раз заново открыть действие, чтобы изображения действительно были получены и отображались.

Вот класс пользовательских средств визуализации маркеров

public class FirmaRenderer extends DefaultClusterRenderer<FirmaMarker> {

private final IconGenerator iconGenerator;
private final ImageView slika;
private final int width;
private final int height;
private Marker marker;
private MarkerOptions mOptions;
private Context context;

public FirmaRenderer(Context context, GoogleMap map, ClusterManager<FirmaMarker> clusterManager, int width, int height) {
    super(context, map, clusterManager);
    this.width = width;
    this.height = height;
    this.context = context;

    iconGenerator = new IconGenerator(context.getApplicationContext());
    slika = new ImageView(context.getApplicationContext());
    slika.setLayoutParams(new ViewGroup.LayoutParams(width,height));
    slika.setPadding(5,5,5,5);
    iconGenerator.setContentView(slika);
}
@Override
protected void onBeforeClusterItemRendered(FirmaMarker item, MarkerOptions markerOptions) {
    Picasso.get().load(item.getSlika()).fetch();
    Bitmap icon = iconGenerator.makeIcon();
    markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(item.getTitle());
    Picasso.get().load(item.getSlika()).into(slika);
}

@Override
protected boolean shouldRenderAsCluster(Cluster<FirmaMarker> cluster) {
    return false;
}}

А как мне создавать маркеры в основной деятельности

        if(Map != null)
    {
        if(clusterManager == null)
        {
            clusterManager = new ClusterManager<FirmaMarker>(this,Map);
        }
        if(firmaRenderer == null)
        {
            firmaRenderer= new FirmaRenderer(
                    this,
                    Map,
                    clusterManager,
                    160,
                    100
            );
            clusterManager.setRenderer(firmaRenderer);
        }
        for(int i=0;i<FirmaID.size();i++)
        {
            FirmaMarker marker = new FirmaMarker(
                    new LatLng(Double.parseDouble(Sirina.get(i)), Double.parseDouble(Duzina.get(i))),
                    Naziv.get(i),
                    "Притисните за више информација",
                    LinkSlike.get(i),
                    Integer.parseInt(FirmaID.get(i))
            );
            clusterManager.addItem(marker);
            Markeri.add(marker);
        }
        clusterManager.cluster();
    }
...