Echarts-visualMap 禁用点击事件

1,421 阅读1分钟

原因

最近在写echarts的地图,使用到了visualMap组件用来映射地图色块。遇到了一个需求,禁用点击事件,只使用hover事件。在网上没发现该类型的文献,故在此记录一下

解决方法

思路:直接拦截事件并不能成功,故此使用了 (监听图例点击事件) => 使用echarts action API将所有的图例重新设置为选中状态。
注意事项:需要在监听图例点击事件中判断是否为全选中效果,因为每次调用action都会触发点击事件,如果没有终止条件的话会死循环。

实现代码

this.myChart.on('datarangeselected',(e) => {
      const selected = { 0: true, 1: true, 2: true, 3: true, 4: true } //* 因为这边只分了五段,故写死
      if (JSON.stringify(selected) !== JSON.stringify(e.selected)) { //* 判断是否为全部选中,全部选中则不用设置。如果不判断则会死循环
        this.$refs['chart'].myChart.dispatchAction({ //* 调用action方法将图例重新设置为全部选中
          type: 'selectDataRange',
          // 连续型 visualMap 和 离散型 visualMap 不一样
          // 连续型的是一个表示数值范围的数组。
          // 离散型的是一个对象,键值是类目或者分段的索引。值是`true`或`false`
          selected: { 0: true, 1: true, 2: true, 3: true, 4: true }
        })
      }
})