echarts中formatter修改鼠标悬浮事件信息操作、echarts地图块、散点区分触发点击事件 只触发散点问题详解

news2024/11/28 20:49:07

这里写目录标题

  • 1、实例
  • 2、案例详解

1、实例

在这里插入图片描述
这次我拿echarts中 地图组合散点图的实例

!!!实现效果:滑到散点显示不同于地图块的信息 及 formatter 提示窗自定义!!!

这个显示项目名称为"文昌小学校节能项目" , 地图块为"阿城区" 防止重复触发代码:【重点是silent: true

var mapInit = () =>$.get(mapname,function(yCjson){
        echarts.registerMap('haerbin', yCjson, {});
        var option = { // echarts 配置
            tooltip: {
                trigger: 'item',
                //   提示框
                formatter:function(params){
                    let text = params.name + 
                            "<br>位置信息:" + params.value 
                    return text
                },
            },
            geo: { // 地图配置
                show: true,
                map: 'haerbin', 
                label: {
                    normal: {
                        show: false
                    },
                    emphasis: {
                        show: false
                    }
                },
                roam: false,
                itemStyle: {
                    normal: {
                        borderColor: '#2AB8FF',   // 边
                        borderWidth: 1.5,
                        areaColor: '#12235c'    // 里
                    },
                    emphasis: {
                        areaColor: '#2AB8FF',
                        borderWidth: 0,
                    }
                },
                zoom: 1.2,
                silent: true,                  //  遮罩一层 !!!
            },
            series: [ { // 散点配置
                name: '项目坐标',
                type: 'effectScatter',
                coordinateSystem: 'geo',
                data: geoCoordMap,
                symbolSize: 15,   // 点的大小
                showEffectOn: 'emphasis',   // 特效渲染前提设置
                rippleEffect: {
                    brushType: 'stroke'    // 特效波纹渲染
                },
                hoverAnimation: true,
                label: {
                    normal: {
                        formatter: '{b}',    // 右侧文字
                        position: 'right',
                        show: false
                    },
                    emphasis: {
                        show: true
                    }
                },
                itemStyle: {
                    normal: {
                        color: '#ff8003'
                    }
                }
            },]
        };
        myCharts.setOption(option);
    });
    // 散点触发
    myCharts.on('click', function (e) {
        window.location.href="./indexChild.html";
    });
    mapInit();

这里用到了两次 formatter 第一个在trigger中为正常显示的提示框 默认黑底白字的 第二个在label中
可以理解为是散点的“特色”
调用{a}{b}{c}方法详见官方文档

还有一处自定义是我把地图的series数据删掉了 否则与散点的silent冲突 而且此需求地图的意义用geo引入进来即可 应用散点还是靠坐标位置来衡量geo

2、案例详解

formatter一般用于格式化鼠标悬浮时间的信息,如果数据是JSON数组格式,那么不必这样判断扇形图的 ticket值,使用 formatter 的 callback 时间即可自行对应

formatter: function (params, ticket, callback) {
console.log(params);
console.log(ticket);
var str = '明细:<br/>';
if(ticket == 'item_操作概况_0'){
for(var i in data.mustMod){
str += "模块:" + data.mustMod[i].MODULE_NAME +"&nbsp"+data.mustMod[i].TOTAL +"("+data.mustMod[i].precentAcccess+"%)" + "<br/> " ;
}
//alert(data.lessMod[data.lessMod.length-1].totalAccess);
str += "总数:"+ data.must.totalAccess + "&nbsp" +"("+ data.must.totalPrecent+"%)" + "<br/> ";
}
if(ticket == 'item_操作概况_1'){
for(var i in data.moreMod){
str += "模块:" + data.moreMod[i].MODULE_NAME +"&nbsp"+data.moreMod[i].TOTAL +"("+data.moreMod[i].precentAcccess+"%)" + "<br/> " ;
}
//alert(data.lessMod[data.lessMod.length-1].totalAccess);
str += "总数:"+ data.more.totalAccess + "&nbsp" +"("+ data.more.totalPrecent+"%)" + "<br/> ";
}
if(ticket == 'item_操作概况_3'){
for(var i in data.lessMod){
str += "模块:" + data.lessMod[i].MODULE_NAME +"&nbsp"+data.lessMod[i].TOTAL +"("+data.lessMod[i].precentAcccess+"%)" + "<br/> " ;
}
//alert(data.lessMod[data.lessMod.length-1].totalAccess);
str += "总数:"+ data.less.totalAccess + "&nbsp" +"("+ data.less.totalPrecent+"%)" + "<br/> ";
}
if(ticket == 'item_操作概况_2'){
for(var i in data.normalMod){
str += "模块:" + data.normalMod[i].MODULE_NAME +"&nbsp"+data.normalMod[i].TOTAL +"("+data.normalMod[i].precentAcccess+"%)" + "<br/> " ;
}
//alert(data.lessMod[data.lessMod.length-1].totalAccess);
str += "总数:"+ data.normal.totalAccess + "&nbsp" +"("+ data.normal.totalPrecent+"%)" + "<br/> ";
}
//callback(ticket, str);
return str;
}
},

补充知识: echarts点击柱状图事件, 点 echarts柱状图悬浮展示相应的信息, echarts柱状图柱头展示信息

悬浮显式在tooltip中设置formatter
柱状图中的表头显式在series下的itemStyle下的normal下的label下的formatter中设置
点击事件就是:【先获取柱状图的div 然后和 对象.on() 】

var myChart = echarts.init(document.getElementById('main'));
myChart.on('click', function (params) {});

ajax:

$.ajax({
url: "../../basexxxx/getxxxxxxx",
type: "post",
data: {
param: param
},
success: function (data) {
option.series[0].data = xxxxxxxxxxx;//百分比
// option.series[1].data = xxxxxxxxxxx;
option.xAxis[0].data = xxxxxxxxxxxx;//项点名称
riskNames = xxxxxxxxxx;
//违反次数
breakCount = xxxxxxxxx;//xx次数
//检查次数
checkCount = xxxxxxxxxx;
//描述
riskLevelDetails = xxxxxxxxxxx;
//项点id集合
riskIds = data.xxxxxxxxx;
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
});

HTML:

<div style="margin: 0;padding: 5px; max-width:100%;width: 100%;overflow-x: auto;">
<div id="main" style="width: 350%;height:500px;"></div>
</div>

Option:

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
var breakCount = [];
var checkCount = [];
var riskLevelDetails = [];
var riskNames = [];
var riskIds = [];
var option = {
color: ['#3398DB'],
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
//悬浮提示
formatter: function (params) {
for (var i = 0, l = option.xAxis[0].data.length; i < l; i++) {
if (option.xAxis[0].data[i] == params[0].name) {
var val3 = riskLevelDetails[i] || 0;
// toFixed(1)精确小数点
return '项点名称:' + riskNames[i] + '<br>'
+ '违反占比:' + option.series[0].data[i].toFixed(1) +'%'+ '<br>'
+ riskLevelDetails[i];
}
}
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [{
type: 'category',
data: [],
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: 40
}
}],
yAxis: [{
type: 'value'
}],
series: [{
name: '违反占比',
type: 'bar',
barWidth: '60%',
itemStyle: {
normal: {
//可根据柱状图量的大小进行判断变换颜色
color: function (params) {
if (params.data < 60) {
return 'green'
} else {
return '#c23531'
}
return '#ccc'
},
label: {
show: true,
position: 'top',
formatter: function (params) {
//单个柱状图表头展示
for (var i = 0, l = option.xAxis[0].data.length; i < l; i++) {
if (option.xAxis[0].data[i] == params.name) {
var val1 = breakCount[i] || 0;
var val2 = checkCount[i] || 0;
return '{color1|' + val1 + '}/{color2|' + val2 + '}';
}
}
},
rich: {
color1: {
color: '#c23531'
},
color2: {
color: '#42a1fe'
}
},
textStyle: {
color: '#333'
}
}
}
},
data: []
}
]
};
然后柱状图的点击事件
//点击事件
myChart.on('click', function (params) {
console.log(params);
var index = params.dataIndex;
console.log("下标:"+xxx);
console.log("项点id:"+xxxx);
console.log("名称:"+params.name);
console.log("南京东机务段单位代码:"+xxxxx);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

千锋教育+计算机四级网络-计算机网络学习-01

目录 课程链接 最早的广域网 计算机网络发展阶段 计算机网络的定义与要点 英文单词网络术语与解释 计算机网络分类 广域网技术 城域网 局域网 个人局域网 五种基本的网络拓扑结构​ 误码率 电路交换网特点 分组交换 交换方式 TCP/IP协议族 IP协议介绍 TCP协议介绍 …

OpenCV的solvePnP函数和Dlib估计头部姿势

一、姿势估计概述1、概述在许多应用中&#xff0c;我们需要知道头部是如何相对于相机倾斜的。例如&#xff0c;在虚拟现实应用程序中&#xff0c;可以使用头部的姿势来渲染场景的右视图。在驾驶员辅助系统中&#xff0c;在车辆中观察驾驶员面部的摄像头可以使用头部姿势估计来查…

React(coderwhy)- 06(RTK)

认识ReduxToolkit 认识Redux Toolkit ◼ Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。  在前面我们学习Redux的时候应该已经发现&#xff0c;redux的编写逻辑过于的繁琐和麻烦。  并且代码通常分拆在多个文件中&#xff08;虽然也可以放到一个文件管理&#xff0c;…

[RoarCTF 2019]Online Proxy(x-forwarded-for盲注)

这道题点开题目 然后题目显示不出网&#xff0c;一开始误认为是ssrf了&#xff0c;但是没有更多的信息了。 源码有一个ip会不会是修改X-Forwarded-For就可以了呢&#xff0c;抓包试一下&#xff0c; 发现有两个ip&#xff0c;一个当前一个是last上一个的意思把&#xff0c;…

数字图像处理实验——图像增强

一、实验目的与要求1.掌握图像空域点处理增强方法&#xff0c;包括图像求反&#xff0c;线性灰度变换&#xff0c;以及直方图均衡化方法&#xff1b;2.熟练掌握空域滤波增强方法&#xff0c;包括平滑滤波器及锐化滤波器。二、实验内容及步骤1.图像的求反、线性灰度变换、直方图…

【回答问题】ChatGPT上线了!比较流行的监督学习模型

监督学习模型是指在训练过程中&#xff0c;使用带有正确答案的标记数据来进行学习。常见的监督学习模型包括逻辑回归、决策树、支持向量机、朴素贝叶斯分类器、神经网络等。最近流行的监督学习模型还包括深度学习模型&#xff0c;如卷积神经网络和循环神经网络。 下面给出一些…

超级浏览器能帮来赞达(Lazada)老板什么忙?

近几年东南亚市场因人口红利及互联网的高度普及倍受关注&#xff0c;东南亚市场成了跨境市场的香饽饽&#xff0c;像来赞达&#xff08;Lazada&#xff09;、虾皮&#xff08;shopee&#xff09;等平台都是最近东南亚地区比较受欢迎的在线购物网站。根据第三方发布的调查报告显…

QGroundControl中使用QT语言家功能

QT语言家支持多种语言功能&#xff0c;在QGC中也很好的使用了该功能&#xff0c;下面对该功能是一些理解进行整理。首先在QGC使用语言家功能中分为qml文件和.c文件&#xff0c;两种略有不同。在.c文件中使用tr()将需要翻译的内容进行包裹在qml文件中使用qsTr()进行包裹下面以新…

【手把手一起学习】(一) Altium Designer 20 软件安装

Altium Designer 20 软件安装 1、解压安装压缩包 2、打开Setup文件夹 3、选中AltiumDesigner20Setup&#xff0c;选择“以管理员身份运行” 4、直接点击Next 5、选择“Chinese”&#xff0c;点击Next 6、直接点击Next 7、选择安装路径 8、直接点击Next 9、继续Next 10、软件安…

软件设计师通关攻略

软件设计师考什么&#xff1f;一、基础知识1.计算机科学基础知识2.计算机系统知识3.系统开发和运行知识4.面向对象基础知识5.信息安全知识6.标准化、信息化和知识产权基础知识7.计算机专业英语二、应用技术1.外部设计2.内部设计3.数据库应用分析与设计4.程序设计5.系统实施6.软…

【内网基于docker部署flink1.13.6 CDC、zeppelin0.10.0、flink-sql-cookbook-on-zeppelin】

内网基于docker部署flink1.13.6 CDC、zeppelin0.10.1、flink-sql-cookbook-on-zeppelin1、基础环境2、部署步骤2.1 docker安装2.2 拷贝docker镜像至内网2.2.1 外网机器下载所有需要镜像2.2.2 外网机器镜像检查2.2.3 外网机器镜像打包2.2.4 拷贝至内网2.2.5 内网加载镜像2.3 下载…

(剖面图全网唯一教程)如何利用EDEM制作剖面图 (自己琢磨出)

EDEM制作剖面图是一件非常重要的工作,本篇文章的方法是自己琢磨出来的,不一定完全精准,但是有效果,剖面图是可以制作出来的。方法在文末。

如何在图片上添加贴图?试试这几种方法

你平时在拍照的时候&#xff0c;有没有遇到过这样的情况&#xff1a;当你拍照后&#xff0c;发现背景不是很符合你的心意出现了一些你不想分享的物品&#xff0c;这个时候你会怎么办呢&#xff1f;一般情况下&#xff0c;有的小伙伴会选择使用马赛克来遮住这些物品&#xff0c;…

js如何引用同级元素

具体效果示例效果,可点击文末左下角阅读原文https://coder.itclan.cn/fontend/js/17-yinyong-tongji-elem/具体描述在网页中,同级(兄弟)元素,指的是拥有相同的直接父级元素的元素,并且往往指的是同类的元素,同类元素在实际开发中遇到的比较多比如:列表li,并列的按钮等,当需要做…

SpringBoot集成xxl-job分布式定时任务

一、xxl-job定时任务搭建下面这篇文章介绍了xxl-job平台搭建过程https://blog.csdn.net/xrq1995/article/details/126282290二、spring boot项目搭建1.创建项目2.pom文件引入<!-- xxl-job-core --><dependency><groupId>com.xuxueli</groupId><arti…

【文档】利用readthedoc来写一个在线文档

使用readthedoc快速创建在线文档 分为两步走 本地创建文档部署到网络 本地创建文档 先安装sphinx pip install sphinx然后在你的文件夹内 sphinx-quickstart一系列默认回车即可 最后编译 make html会产生_build文件夹之类的。 用浏览器打开_build/html/index.html 以…

详细流程——安装并启动Jupyter notebook

安装并启动使用Jupyter notebook一、安装*step1:*切换路径*step2:*下载*step3:*启动Juypter Notebook*step4:*配置Jupyter Notebook*step5(可不配置):* 添加代码自动补全功能二、启动三、初步使用一、安装 注意&#xff1a;我是没有安装Anaconda&#xff0c;中途觉得需要Jupyt…

LeetCode:16. 最接近的三数之和

16. 最接近的三数之和1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组…

全网最全ssh:远程连接服务器学习,教你十分钟学会

远程连接服务器简介 SSH是如何工作的&#xff1f; 认证阶段 ssh修改配置文件 配置文件注释 练习 试验1 实验2 测试 远程连接服务器简介 1、什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可…

JSP学习笔记一

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…