我可以通过创建 2 个 GClusterManager 对象来显示 2 种不同类型的集群。但问题是集群项目被重置为新创建的 GClusterManager 对象,因此当我们放大 map 时,第一个 GClusterManager 对象的项目也不会分解为单独的标记。我正在使用以下类进行聚类:
最佳答案
这有点不明显,但是当您将集群项添加到 GMUClusterManager 时,实际上项正在添加到 GMUClusterAlgorithm 中。您需要确保正确创建集群管理器。因此,当您清除其中一个管理器[clusterManagerclearItems]
中的项目时,其他管理器集群仍保持相关。
// Common clusters setup
id<GMUClusterIconGenerator> iconGenerator = [[GMUDefaultClusterIconGenerator alloc] init];
PinItemClusterRenderer *pin_renderer = [[PinItemClusterRenderer alloc] initWithMapView:self.mapView
clusterIconGenerator:iconGenerator];
//Pin clusters setup
id<GMUClusterAlgorithm> pin_algorithm =
[[GMUNonHierarchicalDistanceBasedAlgorithm alloc] init];
[pin_renderer setMapView:self.mapView];
pin_cluster_manager =
[[GMUClusterManager alloc] initWithMap:self.mapView
algorithm:pin_algorithm
renderer:pin_renderer];
//Record clusterSetup
id<GMUClusterAlgorithm> record_algorithm =
[[GMUNonHierarchicalDistanceBasedAlgorithm alloc] init];
RecordItemClusterRenderer *record_renderer = [[RecordItemClusterRenderer alloc] initWithMapView:self.mapView
clusterIconGenerator:iconGenerator];
[record_renderer setMapView:self.mapView];
record_cluster_manager = [[GMUClusterManager alloc] initWithMap:self.mapView
algorithm:record_algorithm
renderer:record_renderer];
这两个集群生成器对我来说效果很好。虽然现在我遇到了这些集群相互重叠的问题。
关于ios - 如何在 Google Map iOS SDK 中处理多种类型的聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371839/