毕加索未在片段的第一次加载中渲染图像

时间:2019-09-19 03:13:03

标签: google-maps android-studio google-maps-markers picasso

我正在使用Picasso库从URL加载图像以在Google Map Cluster Marker中呈现,问题是在第一次加载未显示图像的Fragment时,我必须重新加载Fragment才能显示图像

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());
    }
    //....
}

0 个答案:

没有答案