1

I'm using Picasso library to load image from URL to be rendered in a Google Map Cluster Marker, the problem is on the first load of the Fragment the images is not displaying I have to reload the Fragment for the images to display.

MapsFragment

private ClusterManager mClusterManager;
private ClusterManagerRenderer mClusterManagerRenderer;
private ArrayList<ClusterMarker> mClusterMarkers = new ArrayList<>();
//....
public void onMapReady(GoogleMap googleMap) {
    if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)  return;

    //....
    mMap = googleMap;


    renderMarkers();
    setGoogleMapStyle();

    //.....
}

private void renderMarkers(){
    //.....
    if (mClusterManager != null && !mClusterMarkers.isEmpty()) {
        mClusterManager.clearItems();
        mClusterMarkers.clear();
    }

    if(mMap != null) {
        if(mClusterManager == null) mClusterManager = new ClusterManager<ClusterMarker>(getActivity().getApplicationContext(), mMap);

        if(mClusterManagerRenderer == null){
            mClusterManagerRenderer = new ClusterManagerRenderer(
                    getContext(),
                    mMap,
                    mClusterManager
            );
            mClusterManager.setRenderer(mClusterManagerRenderer);
        }

        try{
            ClusterMarker newClusterMarker = new ClusterMarker(
                new LatLng((Double) eachImage.get("lat"), (Double) eachImage.get("lng")), // image lat lng
                    (String) eachImage.get("notes"), // marker title
                    (String) eachImage.get("notes"), // marker snippet
                    (String) eachImage.get("image") // image url http://i.imgur.com/DvpvklR.png
            );

            mClusterManager.addItem(newClusterMarker);
            mClusterMarkers.add(newClusterMarker);
        }catch (NullPointerException e){
            Log.e("tag", "addMapMarkers: NullPointerException: " + e.getMessage() );
        }

        mClusterManager.cluster();
    }
    //....
    Log.e("tag", "addMapMarkers: markers are set");
}

ClusterManagerRenderer

public class ClusterManagerRenderer extends DefaultClusterRenderer<ClusterMarker> {
    //....
    @Override
    protected void onBeforeClusterItemRendered(ClusterMarker item, MarkerOptions markerOptions) {
        Picasso.get().load(item.getThumbnail()).into(imageView);
        Bitmap icon = iconGenerator.makeIcon();
        markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(item.getTitle());
    }
    //....
}
newbie
  • 119
  • 15
  • Can you please try the solutions in this thread and let us know if they worked for you? https://stackoverflow.com/questions/42826035/picasso-image-is-not-loading-on-first-run and – evan Sep 21 '19 at 07:11

0 Answers0