ЗДЕСЬ Карты - Infobubble закрыть событие / ловушка - PullRequest
1 голос
/ 03 февраля 2020

У меня есть приложение Angular 8 с элементами боковой панели и картой с маркерами. Дело в том, что мне нужно открыть элемент на боковой панели, когда пользователь нажал на маркер и открыл инфопузырь. Эту часть довольно легко выполнить, поскольку я могу добавить eventListener для «нажатия» на маркер, а затем выполнить необходимые логи c.

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

Проблема заключается в том, что мне нужно очистить выбранный элемент при закрытии информационной панели. событие, так как я не смог найти ничего, что активировало бы, когда на его кнопке закрыта инфобуббл У кого-нибудь есть идея, возможно ли это и как?

Я нашел похожую статью об этом, но ей 5 лет, и я не уверен, что это работает сейчас, так как я не смог чтобы заставить его работать: Как подключиться к событию "close infobubble" в HERE maps Javascript API

1 Ответ

2 голосов
/ 03 февраля 2020

Статья, которую вы нашли, является устаревшей версией 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. добавьте onStateChange обратный вызов к параметрам InfoBubble:

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 # и InfoBubble # getState .

...