Glympse API - 如何从GLYMapView中删除过期的票证注释

时间:2013-06-06 22:26:04

标签: glympse

我一直在尝试使用GLYMapModeBase中的此方法从GLYMapView中删除票证注释:

- (void)ticketRemoved:(const Glympse::GTicket&)ticket;

但是我没有成功,因为在ticketRemoved方法中,我的mapUser始终为null:

Glympse::GMapUser mapUser = ticket->getContext(GLYMapUserContext);
if ( mapUser == NULL )
{
    return;
}

如果此方法是删除注释的正确方法,如何在GTicket中设置GMapUser?我查看了文档但发现没有可用的功能。

1 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。

  1. 您可以提供类似于GLYWorldView的GLYMapMode实现,但忽略过期的票证。您需要将Glympse :: GE :: TICKET_EXPIRED事件(对于传入的票证)连接到[GLYMapModeBase ticketRemoved:]。
  2. 如果您不需要跟踪过期的票证(传入),您可以在到期时立即将其从系统中删除。此处的模式类似于上面提出的模式,但可以在不对地图组件进行任何更改的情况下完成。您需要收听所有活动票证广播的事件(GLYWorldView提供了一个如何实现该事件的好例子)。一旦票证到期,您可以通过调用IUser :: stopWatching()来停止观看用户(假设此用户没有其他活动票证)。这将反过来从地图中删除用户。