HERE 地图 - Infobubble 关闭事件/挂钩

HERE Maps - Infobubble close event / hook

我有一个 Angular 8 应用程序,其中包含侧边栏项目和带有标记的地图。 问题是当用户单击标记并打开 infobubble 时,我需要在侧边栏中打开该项目。这部分很容易做到,因为我可以在标记上为 'tap' 添加 eventListener,然后执行所需的逻辑。

marker.addEventListener('tap', (evt) => {
   this.onTapBubble(evt, 'marker');
});

问题是当我需要在 infobubble 关闭事件中清除所选项目时,因为我找不到任何在 infobubble 关闭其按钮时会激活的挂钩。 有谁知道这是否可能以及如何实现?

我找到了关于它的类似文章,但它已有 5 年历史了,我不确定它现在是否有效,因为我无法使其正常工作:

您找到的文章适用于已弃用的 HERE javascript API (2.5.x) 版本。

对于当前的 APi 版本 (3.x),这很容易做到。其实有两种方法可以做到:

1.收听 InfoBubble 的 statechange 事件:

bubble = new H.ui.InfoBubble(map.getCenter(), {
  content: 'Test'
});

bubble.addEventListener('statechange', function(evt) {
    if (evt.target.getState() === H.ui.InfoBubble.State.CLOSED) {
       console.log('Bubble closed')
    }
})

2。在 InfoBubble 的选项中添加 onStateChange 回调:

bubble = new H.ui.InfoBubble(map.getCenter(), {
  content: 'Test',
  onStateChange: function(evt) {
    if (evt.target.getState() === H.ui.InfoBubble.State.CLOSED) {
       console.log('Bubble closed');
    }
  }
});

有关详细信息,请参阅 InfoBubble#Options and InfoBubble#getState