2016-05-16 76 views
0

有没有办法从集群中排除一个选定的标记?Android谷歌地图集群如何排除一个标记

这是我的渲染器类

private class StoreRenderer extends DefaultClusterRenderer<Store> { 
    HashMap<Store, Marker> storeMarkerMap = new HashMap<Store, Marker>(); 
    public StoreRenderer(Context context, GoogleMap map, ClusterManager<Store> clusterManager) { 
     super(context, map, clusterManager); 
    } 

    public Marker getMarkerFromStore(Store clusterItem) { 
     return storeMarkerMap.get(clusterItem); 
    } 

    public void removeMarkerFromStore(Store itemToRemove) { 
     storeMarkerMap.remove(itemToRemove); 
    } 


    @Override 
    protected void onBeforeClusterItemRendered(Store item, MarkerOptions markerOptions) { 
     super.onBeforeClusterItemRendered(item, markerOptions); 
     markerOptions.icon(BitmapDescriptorFactory.fromResource(item.getMainCategoryResourceImage())); 
    } 

    @Override 
    protected void onClusterItemRendered(Store clusterItem, Marker marker) { 
     super.onClusterItemRendered(clusterItem, marker); 
     storeMarkerMap.put(clusterItem, marker); 
    } 
    @Override 
    protected boolean shouldRenderAsCluster(Cluster cluster) { 
     return cluster.getSize() > 3; 
    } 

    public HashMap<Store, Marker> getStoreMarkerMap() { 
     return storeMarkerMap; 
    } 
} 

,我将所有的商店这样

ClusterManager<Store> mClusterManager = new ClusterManager<Store>(getContext(), map); 
StoreRenderer renderer = new StoreRenderer(getContext(), my_map, mClusterManager); 
mClusterManager.setRenderer(renderer); 
..... 
mClusterManager.addItem(temp); 

mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<Store>() { 
     @Override 
     public boolean onClusterItemClick(Store storeClusterItem) { 
      markerClicked(storeClusterItem); 
      return true; 
     } 
    }); 

我怎么能排除聚类点击的标志?

回答

0

关于删除群集中的项目可能有很多解决方法。

  • 使用GridBasedAlgorithm当它支持元素删除。

在这种SO question,社区在集群中删除标记提供了一些解决办法像GridBasedAlgorithm和一些自己的code implementation

我希望这个澄清一些事情。 :)