• 两个echarts地图联动高亮区域


    项目要求左右两张地图能够在鼠标悬浮的时候高亮部分联动,曾尝试了connect不好使,所以自己写了这段代码。代码思路为:

    1. 鼠标移入地图时,另一侧的地图根据鼠标悬浮获取到的区域name使该区域高亮;
    2. 鼠标移入地图时,根据鼠标在地图的坐标位置,使另一侧的地图tooltip悬浮于获取的坐标位置,保证两张地图的tooltip的位置相同。

    图片描述
    遇见的坑:

    1. 使用dispatchAction引发showTip,会发现tooltip只能显示很短的时间,所以我鼠标移入地图时,给另一个地图设置tooltip[0].alwaysShowContent=truetooltip[0].triggerOn="none"。官网要求使用dispatchAction引发showTip需要设置triggerOn="none",但是我试了有没有都行,有alwaysShowContent=true就行;
    2. 在设置tooltip的时候,使用的是对象。而获取的时候tooltip会成为数组,也许echarts是为了满足多个tooltip的需求。

    函数只要传进去echarts实例就行,代码如下:

    //前面的代码省略直接调用,传入echarts实例对象
    connectMap(chart1,chart2);
    
    function connectMap(chart1,chart2){
        //当鼠标移入左侧的地图上
            chart1.on("mouseover",function(target){
                
                var option=chart2.getOption();
                option.tooltip[0].alwaysShowContent=true;
                option.tooltip[0].triggerOn="none";
                chart2.setOption(option,true);
                chart2.dispatchAction({
                    type:'downplay',
                    seriesName:'rightmap'
                })
                chart2.dispatchAction({
                    type:'highlight',
                    name:target.name,
                })
            
        })
        chart1.on("mousemove",function(target){
            
            chart2.dispatchAction({
                type:'showTip',
                name:target.name,
                x:target.event.offsetX,
                y:target.event.offsetY
            })
        })
        chart1.on("mouseout",function(){
            var option=chart2.getOption();
            option.tooltip[0].alwaysShowContent=false;
            option.tooltip[0].triggerOn="mousemove";
            chart2.setOption(option,true);
            chart2.dispatchAction({
                type:'hideTip'
            })
        })
    
        //当鼠标移到右边的地图
        chart2.on("mouseover",function(target){
            var option=chart1.getOption();
            option.tooltip[0].alwaysShowContent=true;
            option.tooltip[0].triggerOn="none";
            chart1.setOption(option,true);
            chart1.dispatchAction({
                type:'downplay',
                seriesName:'rightmap'
            })
            chart1.dispatchAction({
                type:'highlight',
                name:target.name,
            })
            
        })
        chart2.on("mousemove",function(target){
            
            chart1.dispatchAction({
                type:'showTip',
                name:target.name,
                x:target.event.offsetX,
                y:target.event.offsetY
            })
        })
        chart2.on("mouseout",function(){
            var option=chart1.getOption();
            option.tooltip[0].alwaysShowContent=false;
            option.tooltip[0].triggerOn="mousemove";
            chart1.setOption(option,true);
            chart1.dispatchAction({
                type:'hideTip'
            })
        })
    }
  • 相关阅读:
    Windows Server 2003 DHCP迁移到2008R2的方法
    在Linux上安装Zabbix agent的方法
    在Windows上安装Zabbix agent的方法
    利用pscp程序实现Windows和Linux互传文件
    CentOS 7 LNMP环境搭建 Zabbix3.4
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp8 Web基础
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp5 信息搜集与漏洞扫描
  • 原文地址:https://www.cnblogs.com/10manongit/p/12836654.html
Copyright © 2020-2023  润新知