0

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

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

但我一直没有成功,因为在 ticketRemoved 方法中,我的 mapUser 始终为空:

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

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

4

1 回答 1

2

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

  1. 您可以提供自己的 GLYMapMode 实现,类似于 GLYWorldView 但忽略过期的票证。您需要将 Glympse::GE::TICKET_EXPIRED 事件(用于传入的票证)连接到 [GLYMapModeBase ticketRemoved:]。
  2. 如果您不需要跟踪过期的票据(传入),您实际上可以在过期后立即将它们从系统中删除。这里的模式与上面提出的模式类似,但无需对地图组件进行任何更改即可完成。您需要收听所有活动票证广播的事件(GLYWorldView 提供了一个很好的例子来说明如何实现它)。一旦票证到期,您可以通过调用 IUser::stopWatching() 停止监视用户(假设没有来自该用户的其他活动票证)。这将反过来从地图中删除用户。
于 2013-06-07T16:54:19.280 回答