2011-10-11 101 views
0

我在新的应用程序中使用(非常酷)WhirlyGlobe(https://code.google.com/p/whirlyglobe/)iPhone全球3D显示屏。我可以使用下面显示的代码在特定位置添加标签。我希望能够回去并删除我之前添加的标签。文档(http://whirlyglobedocs.s3-website-us-east-1.amazonaws.com/html/interface_label_layer.html#ac17e1ec72e70eec416cb2cac833f46fa)显示了一个removeLabel方法,但我似乎无法让它工作。我可以添加但不删除标签。我尝试循环遍历所有子视图,但找不到这些SimpleLabel实例。有人可以帮助我了解如何删除标签吗?我没有多少运气找到很多例子。谢谢!使用WhirlyGlobe删除标签

// Current position 
float lat = [[values objectAtIndex:8] floatValue]; 
flaot lon = [[values objectAtIndex:9] floatValue]; 

// Create a SingleLabel at this Lat/Lon pair location     
SingleLabel *interimLabel = [[[SingleLabel alloc] init] autorelease]; 
interimLabel.text = [NSString stringWithFormat:@"PRN %d",[[values objectAtIndex:1] intValue]]; 
[interimLabel setLoc:GeoCoord::CoordFromDegrees(lon, lat)]; 
[locationArray addObject:interimLabel]; 
[allLabels addObject:interimLabel]; 
+0

当然在数组allLabels?或者locationArray? Google代码页上的Wiki上是否有类似的帖子? – Luke

+0

我可以看到代码将标签添加到图层的位置吗? – mousebird

+0

下面的答案就像一个魅力 - 谢谢。 – PhilBot

回答

0

当您向标签图层添加单个标签或一组标签时,您将获得SimpleIdentity。保持在某个地方。然后,当您想要从标签图层中删除标签(或标签组)时,您将返回该SimpleIdentity。

这是怎么回事。 WhirlyGlobe批量绘制数据,如mofo。一旦Label Layer将它们压缩成尽可能少的Drawables,它的SingleLabel对象就不再存在,并且它可以逃脱。因此,要引用这些标签,您必须保留唯一的ID。

现在,如果您想分别删除这些标签或单独更改其外观,那么您必须逐个添加它们。一个SimpleIdentity标签。否则,无法单独引用它们。

为了提高速度,我建议将它们中的许多组合在一起,因为您可以避开。如果现在太复杂了,请逐一添加它们,然后记下来回来。所以,当你说“为什么不按照我想要的那样快速运行”时,你可以说“Ooooo,对吧。”

+0

有道理,像魅力一样工作 - 谢谢。 – PhilBot