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

时间:2015-04-25 07:24:10

标签: ios citymaps

我根据我的数据设置了CEMarkerGroup,并成功显示了它们。根据Citymaps'documentation,他们指出以下内容:

  

使用标记组   标记组允许您同时组织标记并对组中的所有标记执行功能,并执行您需要自己实现的某些操作。

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

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];
}

这些已经与我的地图对象相关联的群组显示正常,但我找不到任何办法对这些群体采取行动(例如,隐藏群组,显示群组等) 有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我是Citymaps的开发人员。

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

如果您想对组中的每个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;
    }