如何从 Highcharts 中删除注释?

How do you remove an annotation from Highcharts?

我正在使用 Highcharts 6。我正在使用以下事件来获取我的数据点 ID 并以简单的形式打开弹出窗口。

plotOptions: {
    series: {
        point: {
            events: {
                click: function(e) {
                    selected_point = e.point.id
                    $('#chart').popover("toggle")
                }
            }
        }
    }
}

提交表单时,会在该数据点上设置注释。

$('body').on('click', '#save_annotation', function() {
    var text = $("#annotationForm").val()
    myChart.addAnnotation({
        labels: [{
            point: selected_point,
            text: text
        }]
    })
    $('#chart').popover("toggle")
}) 

目前为止效果很好。我需要一种方法来修改和删除现有注释。看来我应该使用 removeAnnotation() 但我似乎无法弄清楚如何使用它。文档表明我需要传递注释 ID。我在哪里可以找到这个ID?当我调用 myChart.annotations 时,我可以看到一个对象数组。每个对象都是一个注解但是没有id 属性.

我能够使用 forEach 循环通过 destroy() 方法删除特定注释,但它在注释数组中留下了一个项目,不推荐这样做。

删除注释的正确方法是什么?如何获取注释的 ID?此 post 表示 addAnnotation() returns 它所做的注释但返回的​​对象没有显示的那样。例如在我的例子中 annotation.id returns undefined.

与点很像,您必须设置注释的 id。然后就可以在removeAnnotation函数中引用了。

$('body').on('click', '#container', function() {
    var text = 'Hi there';
    if (toggle) {
       myChart.addAnnotation({
          id: 'one',
          labels: [{
              point: 'one',
              text: text
          }]
      });   
    } else {
        myChart.removeAnnotation('one');
    }
    toggle = !toggle;
}) 

http://jsfiddle.net/0pde1tfq/