如何在HERE映射Javascript API中挂钩“close infobubble”事件

时间:2015-08-03 07:41:50

标签: here-api

我可以使用HERE地图Javascript API创建infobubbles - 例如来自他们的documentation

    function addInfoBubble(map) {
      map.set('center', new nokia.maps.geo.Coordinate(53.430, -2.961));
      map.setZoomLevel(7);

      var infoBubbles = new nokia.maps.map.component.InfoBubbles(),
        TOUCH = nokia.maps.dom.Page.browser.touch,
        CLICK = TOUCH ? 'tap' : 'click',
        container = new nokia.maps.map.Container();

      container.addListener(CLICK, function (evt) {
        infoBubbles.openBubble(evt.target.html, evt.target.coordinate);
      }, false);
      map.components.add(infoBubbles);
      map.objects.add(container);

      addMarkerToContainer(container, [53.439, -2.221],
        '<div><a href=\'http://www.mcfc.co.uk\' >Manchester City</a>' +
        '</div><div >City of Manchester Stadium<br>Capacity: 48,000</div>');

      addMarkerToContainer(container, [53.430, -2.961],
        '<div ><a href=\'http://www.liverpoolfc.tv\' >Liverpool</a>' +
        '</div><div >Anfield<br>Capacity: 45,362</div>');
    }
    function addMarkerToContainer(container, coordinate, html) {
      var marker = new nokia.maps.map.StandardMarker(
        coordinate,
        {html: html}
      );
      container.objects.add(marker);
    }

我想挂钩信息交换的关闭事件。我意识到我可以使用jQuery来查找包含关闭按钮的跨度(检查标记,我相信它有类nm_bubble_control_close)并在单击它时执行某些操作。但是我认为我可以使用内置事件。

有没有人知道在infobubble关闭时是否有内置事件会触发?我在文档中找不到任何内容。

3 个答案:

答案 0 :(得分:3)

InfoBubbles组件有一个属性“openBubbleHandles”。这是一个OList,您可以观察到气泡打开(即添加到列表中)或关闭(从列表中删除)。

答案 1 :(得分:1)

AFAIK没有内置事件,也没有可以观察到的相关属性。

可能的解决方法: 使用自定义函数覆盖内置close - 方法:

  container.addListener(CLICK, function (evt) {
    var b = infoBubbles.openBubble(evt.target.html, evt.target.coordinate),
        c = b.close;
    b.close = function(){
      //do what you want to
      alert('bubble will be closed');
      //execute the original close-method
      c.apply(b)
    }
  }, false);

答案 2 :(得分:0)

对于当前的HERE Javascript API版本(3.x),可以在此处找到有效的解决方案:

HERE Maps - Infobubble close event / hook