关于移除 echarts 的 tooltip 的小菱形

太长不看版:设置 tooltip 的 position 属性。


 

最近有项目需要大屏展示,所以学了一波 echarts ,在使用过程中,碰到一个需求,就是在离线地图 + 散点图,散点图还需要支持 tooltip。在编写代码过程中,我发现依靠配置只能全局设置 tooltip,无法只在散点图配置中设置 tooltip,这会导致鼠标划入地图中也会显示 tooltip。

经过一番谷歌和文档查阅后,我将 tooltip 的 triggerOn 设为 none,并监听创建 echarts 对应的 dom 元素的 mouseover 和 mouseout 事件。在 mouseover 事件中,我先判断该事件是否是散点图触发,如果是散点图触发,则使用 echarts 的 dispatchAction 函数,设置 type 为 showTip,并设置 seriesIndex、dataIndex。在 mouseout 事件中,我调用 echarts 的 dispatchAction 函数,并将 type 设为 hideTip。以下是部分代码:

    this.chart = echarts.init(document.querySelector('#mapChart'), null, { renderer: 'svg' });
    this.chart.on('mouseover', this.mapMouseover);
    this.chart.on('mouseout', this.mapMouseout);

    mapMouseover(params) {
      const { seriesType, seriesIndex, dataIndex } = params;
      if (seriesType === 'scatter') {
        this.chart.dispatchAction({
          type: 'showTip',
          seriesIndex,
          dataIndex,
        });
      }
    },
    mapMouseout(params) {
      const { seriesType } = params;
      if (seriesType === 'scatter') {
        this.chart.dispatchAction({
          type: 'hideTip',
        });
      }
    },

到此为止,我本以为这样就完成了需求,没想到产品经理觉得不够吸眼球,让美工来重新设计,美工看了看就问我能不能把 tooltip 的小菱形去了。小菱形如图1 所示

图1 小菱形

图1 小菱形 

我翻了翻文档,文档显示 tooltip 有一个 className 属性,可以让我们修改 tooltip 的样式。试了试,下边的长方形有反应,但是这个小菱形毫无反应,去 dom 一翻,发现这个小菱形是一个独立的 div,但是我确实看见过没有小菱形的 tooltip,于是便去翻阅文档,发现了 tooltip 的 position 属性。想了想,平时见到的 tooltip 通常是在鼠标的斜角方向,便试着将 position 设为 [10,10],然后进行测试发现,菱形确实消失了,只是这个 tooltip 位置在地图组件距左上角 10px 10px 的位置。细看文档,position 可以使用函数,这个函数会给我们五个参数。按照美工的设计,我使用了 point 、size 参数,其中 point 指鼠标当前位置,size 是个对象,包括 dom 的尺寸和 echarts 容器的当前尺寸。以下是示例代码,效果图如图2 :

          tooltip: {
            trigger: 'item',
            show: true,
            enterable: true,
            triggerOn: 'none',
            className: 'map-echarts-tooltip',
            position(point, params, dom, rect, size) {
              return [point[0] - size.contentSize[0] / 2, point[1] + 10];
            },
          },

 图2 移除小菱形并设置className修改样式

 图2 移除小菱形并设置className修改样式

posted @ 2021-07-07 17:02  FreezeNow  阅读(630)  评论(0编辑  收藏  举报