Я использую библиотеку Picasso для загрузки изображения с URL-адреса, который будет отображаться в маркере кластера карты Google, проблема заключается в первой загрузке фрагмента, изображения которого не отображаются. Я должен перезагрузить фрагмент для отображения изображений.
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());
}
//....
}