title: Android open InfoWindow on cluster marker
body: <p>I implemented a option to find the nearest marker from the actual position. I have all the markers in a ClusterItem with a custom InfoWindow. On a normal google map without clustering I could just use <code>marker.showInfoWindow();</code> and the InfoWindow would popup. It seems there is no such method when using clustering, because the markers don't get added as proper maps markers.</p>
  
  <p>My code:</p>
  
  <pre><code>public class StationsFragment extends Fragment implements OnMapReadyCallback {
      private static GoogleMap googleMap;
  
      private ClusterManager&lt;MyItem&gt; clusterManager;
      private MyItem clickedClusterItem;
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
              return inflater.inflate(R.layout.main_activity, container, false);
      }
  
      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
          super.onActivityCreated(savedInstanceState);
  
          Utils.changeLanguage(getActivity());
  
          final SupportMapFragment map = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
          map.getMapAsync(this);
      }
  
      @Override
      public void onMapReady(final GoogleMap map) {
          googleMap = map;
  
          map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(0.0, 0.0), 10));
          map.setMyLocationEnabled(true);
  
          clusterManager = new ClusterManager&lt;&gt;(getActivity(), map);
  
          map.setOnCameraChangeListener(clusterManager);
          map.setOnMarkerClickListener(clusterManager);
          map.setInfoWindowAdapter(clusterManager.getMarkerManager());
  
          clusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener&lt;MyItem&gt;() {
              @Override
              public boolean onClusterItemClick(MyItem item) {
                  clickedClusterItem = item;
                  return false;
              }
          });
  
          loadMarkers();
      }
  
      private void loadMarkers() {
          clusterManager.addItem(new MyItem(lat, lng, title, snippet));
      }
  
      public class ItemAdapter implements GoogleMap.InfoWindowAdapter {
  
          private final View view;
  
          ItemAdapter() {
              view = getActivity().getLayoutInflater().inflate(R.layout.info_window, null);
          }
  
          @Override
          public View getInfoWindow(Marker marker) {
              TextView title = (TextView) view.findViewById(R.id.info_title);
              title.setText(clickedClusterItem.getTitle());
  
              TextView snippet = (TextView) view.findViewById(R.id.info_snippet);
              snippet.setText(clickedClusterItem.getSnippet());
  
              return view;
          }
  
          @Override
          public View getInfoContents(Marker marker) {
              return null;
          }
      }
  
      public class MyItem implements ClusterItem {
          private final LatLng position;
          private final String title;
          private final String snippet;
  
          public MyItem(double lat, double lng, String title, String snippet) {
              this.position = new LatLng(lat, lng);
              this.title = title;
              this.snippet = snippet;
          }
  
          @Override
          public LatLng getPosition() {
              return position;
          }
  
          public String getTitle(){
              return title;
          }
  
          public String getSnippet(){
              return snippet;
          }
      }
  }
  </code></pre>