echarts tooltip在鼠标悬停一段时间后显示

中国地图上的气泡图,限制只有鼠标悬停在某个气泡上一段时间后再去查询后台,减少请求次数。

整个方法:

 initChinaMap() {
      var geoCoordMap = {
        海门: [121.15, 31.89],
        鄂尔多斯: [109.781327, 39.608266],
        招远: [120.38, 37.35],
        舟山: [122.207216, 29.985295],
        齐齐哈尔: [123.97, 47.33],
      };
      var convertData = function (data) {
        var res = [];
        for (var i = 0; i < data.length; i++) {
          var geoCoord = geoCoordMap[data[i].name];
          if (geoCoord) {
            res.push({
              name: data[i].name,
              value: geoCoord.concat(data[i].value),
            });
          }
        }

        return res;
      };
      let option = {
        tooltip: {
          trigger: "item",
          triggerOn:"none",//这里一定要设置none,否则会直接显示tips,而不是由dispatchAction来控制显示
          formatter: function (params, ticket, callback) {
            callback(
              ticket,
              '<ul><li><i class="dot" ' +
                'style="background-color:' +
                params.color +
                ';"></i>' +
                "<span>" +
                params.name +
                "</span></li>" +
                "<li>考核教师总数: 124 人</li>" +
                "<li>考核通过率: 98%</li>" +
                "<li>考核通过教师: 124 人</li>" +
                "<li>首次考核通过率: 52%</li>" +
                "<li>重新考核通过率: 54%</li>" +
                "</ul>"
            );
          },
        },
        //左侧小导航图标
        visualMap: {
          show: true,
          inverse: true,
          x: "left",
          y: "bottom",
          splitList: [
            { start: 0, end: 0 },
            { start: 1, end: 10 },
            { start: 11, end: 25 },
            { start: 26, end: 50 },
            { start: 51, end: 75 },
            { start: 76, end: 100 },
            { start: 101, end: 150 },
            { start: 150, end: 500 },
            { start: 501, end: 1000 },
            { start: 1001, end: 2000 },
            { start: 2000 },
          ],
          inRange: {
            color: [
              "#D8D8D8","#81A9DB","#C1DEFF", "#F2FF6C","#FFE381","#FCB581","#FF9320","#FA6500","#FE0006","#DF0600","#AA0001",
            ],
          },
        },
        geo: {
          map: "china",
          itemStyle: {
            borderColor: "#111",
          },
          emphasis: {
            label: {
              show: false,
            },
          },
        },
        series: [
          {
            name: "分校考核数据",
            type: "scatter",
            coordinateSystem: "geo",
            data: convertData([
              { name: "海门", value: 9 },
              { name: "鄂尔多斯", value: 12 },
              { name: "招远", value: 12 },
              { name: "舟山", value: 12 },
              { name: "齐齐哈尔", value: 14 },
            
            ]),
            symbolSize: 12,
            emphasis: {
              itemStyle: {
                borderColor: "#fff",
                borderWidth: 1,
              },
            },
          },
        ],
      };

      let chinaMap = this.$refs.chinaMap;
      if (chinaMap) {
        this.chinaChart = this.$echarts.init(chinaMap);
        this.chinaChart.setOption(option);
        //设置重绘事件监听
        window.addEventListener("resize", function () {
          this.chinaChart.resize();
        });
        
       //以下是重点,以下是重点,以下是重点
        let timer;
        let $this=this
        this.chinaChart.on('mouseover', 'series', function (params) {
            console.log(params);
            timer = setTimeout(()=>{
               //这里可以发送请求
               $this.chinaChart.dispatchAction({
                 type:'showTip',
                 seriesIndex: 0,
                 dataIndex:params.dataIndex
              });
            },1000)//鼠标悬停一秒,才触发事件
        });
         this.chinaChart.on('mouseout', 'series', function (params) {
           $this.chinaChart.dispatchAction({
                 type:'hideTip',
              });
            clearTimeout(timer)
         });

      }
    },

如果formatter里面的数据需要从后台获取,就在在获取后,重新setOption,就可以啦

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值