【问题标题】:Custom markers not clustering自定义标记不聚类
【发布时间】:2019-10-10 09:24:02
【问题描述】:

我的自定义标记有问题,我想将其设置为集群标记(制造商组),但它不起作用,我在 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(), sn-p, 头像, 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"); }

【问题讨论】:

  • 能否请您发布您的完整代码,以便我们可以从我们这边重现此问题?
  • 我从MyClusterManagerRenderer 中删除了这个方法:shouldRenderAsCluster(Cluster cluster) 然后,我的代码运行良好。谢谢
  • 感谢您的更新。很高兴听到您解决了自己的问题!我建议接受你自己的答案。

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


【解决方案1】:

我删除了这个方法: shouldRenderAsCluster(Cluster cluster) from MyClusterManagerRenderer 然后,我的代码运行良好。

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多