如何对 CEMarkerGroup 中的所有 CEMarker 执行操作

How to perform an action on all CEMarker's in a CEMarkerGroup

我已经根据我的数据设置了CEMarkerGroup,并成功显示了它们。根据 Citymaps 的 documentation,它们表示如下:

USING A MARKER GROUP Marker groups allow you to organize your markers and perform functions on all markers in the group simultaneously, and also perform certain operations which you would need to implement yourself otherwise.

但是,似乎没有任何公开的 class 或允许对特定组执行操作的实例方法。下面,我设置了代码

CEMarkerGroup *grpCondo  = [self.mapView markerGroupWithName:@"grpCondo"];
CEMarkerGroup *grpRental = [self.mapView markerGroupWithName:@"grpRental"];
CEMarkerGroup *grpCoOp   = [self.mapView markerGroupWithName:@"grpCoOp"];
CEMarkerGroup *grpCondop = [self.mapView markerGroupWithName:@"grpCondop"];

稍后,当我遍历要添加的标记列表时,我根据类别 (cat) 值指定组。

if ([cat isEqualToString:@"Condo"]) {
    [grpCondo  addMarker:marker];
}
if ([cat isEqualToString:@"Condop"]) {
    [grpCondop addMarker:marker];
}
if ([cat isEqualToString:@"Rental Unit"]) {
    [grpRental addMarker:marker];
}
if ([cat isEqualToString:@"Co-op"]) {
    [grpCoOp   addMarker:marker];
}

这些已经与我的地图对象相关联的组显示良好,但我找不到任何方法来对这些单独的组进行操作(例如,隐藏组、显示组等) 有什么想法吗?

谢谢!

我是 Citymaps 的开发人员。

CEMarkerGroup 相当简单,在大多数情况下只是一种组织对象所在位置的方法。 我们现在对标记组进行的唯一批处理操作是从地图中删除该组中的所有标记。我们也有碰撞检测功能,我看到你的另一个 post。

如果您想对组中的每个 CEMarker 执行某些操作,CEMarkerGroup 确实提供对其标记的只读访问。

编辑:为了回答您的评论,这里有一个代码示例,说明如何在标记组中切换标记。

    // This would be your toggled value
    BOOL showRentals = YES;
    for(CEMarker *rentalMarker in grpRental.markers) {
        // This property is not yet exposed. This would have the marker automatically fade in or out based on fadeTime.
        //rentalMarker.hidden = !showRentals;

        // You can use this as a proof of concept
        rentalMarker.alpha = showRentals ? 1.f : 0.f;
    }