Android谷歌地图Utils-过滤集群

Android谷歌地图Utils-过滤集群,android,google-maps,google-maps-api-2,Android,Google Maps,Google Maps Api 2,我有一个我目前正在开发的应用程序,我可以在地图上绘制出各种兴趣点。有5种不同类型的POI,我添加了按类型过滤的功能。我能够正确地实现标记的集群,并且我还实现了按类型过滤单个标记,没有任何问题,但是我不知道如何按类型过滤集群中包含的标记,然后让实用程序重新绘制它的集群 为了按类型过滤标记,我创建了自己的CustomClusterRenderer,并覆盖了onClusterItemRendered: @Override protected void onClusterItemRendered(Abs

我有一个我目前正在开发的应用程序,我可以在地图上绘制出各种兴趣点。有5种不同类型的POI,我添加了按类型过滤的功能。我能够正确地实现标记的集群,并且我还实现了按类型过滤单个标记,没有任何问题,但是我不知道如何按类型过滤集群中包含的标记,然后让实用程序重新绘制它的集群

为了按类型过滤标记,我创建了自己的CustomClusterRenderer,并覆盖了onClusterItemRendered:

@Override
protected void onClusterItemRendered(AbstractPOI clusterItem, Marker marker) {
    // TODO Auto-generated method stub
    super.onClusterItemRendered(clusterItem, marker);

    if (mClusterManager.getMarkerMap().get(clusterItem.getPosition()) == null) {
        /*
         * Save a reference to the appropriate filter array by type. 
         */
        if (MapUtils.TYPE_HOTEL.equals(marker.getSnippet())) {
            mClusterManager.getHotelMarkers().add(marker);
        } else if (MapUtils.TYPE_PARK.equals(marker.getSnippet())) {
            mClusterManager.getParkMarkers().add(marker);
        } else if (MapUtils.TYPE_PROVIDER.equals(marker.getSnippet())) {
            mClusterManager.getProviderMarkers().add(marker);
        } else if (MapUtils.TYPE_RESTAURANT.equals(marker.getSnippet())) {
            mClusterManager.getRestaurantMarkers().add(marker);
        }

        /*
         * Save this marker to our marker map to prevent duplicates. 
         */
        mClusterManager.getMarkerMap().put(clusterItem.getPosition(), marker);
    }
}
如果这也意味着在缩放过程中创建的簇中不包含标记,那么最终可能会出现问题。我不确定。上述方法保留对标记的引用,以便在我的CustomClusterManager中包含循环这些标记并设置其“可见”属性的函数:

public void toggleHotelFilter(boolean visible) {
    for (Marker marker : mHotelMarkers) {
        marker.setVisible(visible);
    }
    cluster();
}
也许有更好的方法可以做到这一点,但到目前为止,似乎确实有效。下一部分是让过滤器也浸入到集群中,拉出正在被过滤的POI,并更新计数(或者根据不可见的数量完全移除集群)

我正在使用谷歌地图utils库