Пользовательские маркеры не кластеризуются - PullRequest
1 голос
/ 10 октября 2019

У меня была проблема с моими пользовательскими маркерами, я хочу сделать их такими, как кластерные маркеры (группа производителей), но это не работает, я нашел все маркеры в Картах Google, поэтому даже я используюclusterManager для обработки этой ситуации Я не могу получить желаемый результат:

    public MyClusterManagerRenderer(Context context, GoogleMap googleMap,
                                ClusterManager<ClusterMarker> clusterManager) {//initialize   
}

@Override
protected void onBeforeClusterItemRendered(ClusterMarker item, MarkerOptions markerOptions) {

    imageView.setImageResource(item.getIconPicture());
    Bitmap icon = iconGenerator.makeIcon();
    markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(item.getTitle());

}

@Override
protected void onBeforeClusterRendered(Cluster<ClusterMarker> cluster,
                                       MarkerOptions markerOptions) {


        iconGenerator.setBackground(null);
        Bitmap icon = iconGenerator.makeIcon(String.valueOf(cluster
                .getSize()));
        markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon));

 }

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

в моем GoogleMapsFragment У меня был этот метод для рисования маркеров:

private void addMapMarkers(List<Place> places){

 if(places != null && !places.isEmpty()  && googleMap != null)
 {
         mClusterManager = new ClusterManager<ClusterMarker>(getActivity(), googleMap);

         mClusterManagerRenderer = new MyClusterManagerRenderer(getActivity(),googleMap,mClusterManager);
         mClusterManager.setRenderer(mClusterManagerRenderer);

     for(Place p: places){

         try{

             ClusterMarker newClusterMarker = null;

             if(p != null)
             {
                 newClusterMarker = new ClusterMarker(new LatLng(Double.parseDouble(p.getLocation().getLat()),

Double.parseDouble (p.getLocation (). getLng ())), p.getName (), фрагмент, аватар, p);}

             if (newClusterMarker != null)
             {
                 mClusterManager.addItem(newClusterMarker);
                 mClusterMarkers.add(newClusterMarker);
             }

         }catch (NullPointerException e){
             Log.e(TAG, "7 : "+"addMapMarkers: NullPointerException: " + e.getMessage() );
         }

     }

     mClusterManager.cluster();

     googleMap.moveCamera(prepareCameraForMap(places));

 }
 else
     Log.e(TAG, "9 : Markers not drawed googleMap is null"); }

1 Ответ

0 голосов
/ 21 октября 2019

Я удаляю этот метод: shouldRenderAsCluster(Cluster cluster) из MyClusterManagerRenderer, тогда мой код работал нормально.

...