Highcharts - 处理点击重叠区域的点

时间:2017-07-07 09:02:07

标签: javascript highcharts

我每次点击一个系列的某个点时都需要获取点数详细信息,但点击一个areapline重叠点并不会触发“点击”。事件。仅当系列的点位于前面时才触发。

        plotOptions: {
            series: {
                events: {
                    click: function(event) {
                        alert(this.name);
                    }   
                }
            }
        },

我做了一个小fiddle来展示它。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您将trackByArea选项设置为true,即使系列位于其他系列后面,也会启用捕获点击事件。

 plotOptions: {
            series: {
              trackByArea: true,
                events: {
                    click: function(event) {
                        alert(this.name);
                    }   
                }
            }
        },

示例:http://jsfiddle.net/83x6L69x/

然而,即使您没有完全点击该点,这也会捕获事件。为避免这种情况,您可以检查点击事件是否在点标记内完成:

      plotOptions: {
        series: {
          trackByArea: true,
          point: {
            events: {
              click: function(e) {
                console.log(this)
                const group = this.series.group
                const x = e.chartX - this.plotX - group.translateX
                const y = e.chartY - this.plotY - group.translateY
                const d = (x * x + y * y)

                const rPlus = this.graphic.states.hover.radiusPlus // it is an additional radius when the point is hovered
                const r = this.graphic.radius + (rPlus || 0)

                if (x * x + y * y <= r * r) {
                  alert(this.series.name)
                }
              }
            }
          }
        }
      },

示例:http://jsfiddle.net/dh4zn6h4/