echarts中国地图使省份选择性滑动或点击高亮「建议收藏」

echarts中国地图使省份选择性滑动或点击高亮「建议收藏」本文介绍echarts显示中国省份图,对于需要高亮的省份进行筛选。并且对省份进行选择性交互。首先我们需要一个颜色集合,代表我们要设置多少种颜色。这里用到了dataRange。dataRange:{ show:false, x:’left’, y:’bottom’, splitList:[ …

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

本文介绍echarts显示中国省份图,对于需要高亮的省份进行筛选。并且对省份进行选择性交互。

首先我们需要一个颜色集合,代表我们要设置多少种颜色。这里用到了dataRange。

        dataRange: {
	    	show:false,
	        x: 'left',
	        y: 'bottom',
	        splitList: [
	            {start: 5, end: 5, color: 'orange'},//当值为5时,区域背景
	            {start: 10, end: 10, color: '#ff6300'},//当值为10时,区域背景
	            {start: 15, end: 15, color: '#ccc'},//当值为15时,区域背景
	        ],
	    },

然后就需要数据就行了。

        series : [
	        {
	            name: '市场分布',
	            type: 'map',
	            mapType: 'china',
	            //hoverable: false,
	            roam: false,
	            itemStyle:{
		                normal:{label:{show:true}},
		                emphasis:{label:{show:false}}
		            },
	            data:[],
	        }
	    ],

这里的data为空,因为正常情况下数据不会写死,都是从后台获取的,在这里我直接赋值。

var ini_data=[];//初始化省份数组
var provArr = ['河北', '河南', '云南', '辽宁', '黑龙江', '湖南', '安徽','山东'];//获取的省份,有可能是从后台获取

由于框架不识别’省’,‘市’的字眼,所以使用正则将字眼去掉。

    //正则省份,将省与市的字眼去掉,框架不识别
    for(var i=0;i<provArr.length;i++){
    	var str = provArr[i];
		var re = /省|市/g;  //全局匹配
		var str2 ={name:str.replace(re,''),value: 5};//拼接对象数组
		ini_data.push(str2);
    }

此时,我们有了一个完整的ini_data对象数组了。可以直接给图表赋值了。

 option.series[0].data=ini_data;//将拼接好的数组赋给参数集合
 mycharts.setOption(option);//跟新图表

结果:echarts中国地图使省份选择性滑动或点击高亮「建议收藏」

可以看到,只要在数组里的省份都变成了我设置的orange颜色,因为它们的value都是5。

下面就是交互了,我的需求是点击灰色省份无任何效果,点击orange色的省份背景变为‘#ff6300’。

    //点击事件
	mycharts.on('click', function (params) {//点击事件
			select_province(params.name);
	});
	//初始化省颜色
	function ini_province(){
		var ini_len=option.series[0].data.length;
		for(var i=0;i<ini_len;i++){
			//初始化颜色
			option.series[0].data[i].value=5;
			mycharts.setOption(option);
		}
		
	}
	//选中省颜色
	function select_province(province_name){
		var len=option.series[0].data.length;
		for(var i=0;i<len;i++){
			if(option.series[0].data[i].name==province_name){//如果匹配正确
				//先归零
				ini_province();
				//改变颜色
				option.series[0].data[i].value=10;
				mycharts.setOption(option);
			}
		}
	}

我们通过监听click事件来获得event对象,然后获得省份,经过匹配后,将原来选中的省份清零,再改变选中省份的颜色。

结果:echarts中国地图使省份选择性滑动或点击高亮「建议收藏」

至于鼠标滑过的高亮效果,是框架自带的,默认是所有省份都有,如果想去掉只要加:hoverable: false就行了,不过这样同样会取消掉橙色的省份。所以为了保留橙色省份的滑动高亮效果,我是这样写的。

    //鼠标滑过事件
	var testStr=','+provArr.join(",")+","; 
	mycharts.on('hover', function (param){
		if(testStr.indexOf(","+param.name+",")!=-1){
			return false;
		}else{
			param.value=15;
			mycharts.setOption(option);
		}
	});

这时设置的第三个颜色生效了,当鼠标滑过时没有匹配到provArr中的省份时,就设置背景颜色为#ccc,由于默认背景是#ccc的缘故,也可以重新设置背景色,只要这里设置的颜色与背景色相同就行了。

附上demo地址:https://my.weblf.cn/xly/demo/echarts/map/map2.html

稍作修改也可点击进入省内详情:https://my.weblf.cn/xly/demo/echarts/map/map_china.html

下载地址:https://tx.weblf.cn/files/echarts地图—中国进入省份.zip

附上完整代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			*{margin: 0;padding: 0;color:#333333;}
			h3,h4,h5,h6{font-weight: normal;}
			.clear{clear:both;}
			body{font-family:"微软雅黑";}
			a{text-decoration: none;color: #333;}
			#charts{width:800px;height:600px;margin:0 auto;}
			.market_map_title{font-size:32px;text-align:left;padding-left:50px;}
		</style>
	</head>
	
	<body>
		<h3 class="market_map_title">全国市场分布图</h3>
		<div id="charts"></div>
	</body>
	<!--<script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>-->
	<script src="echarts-all.js"></script>	
<script>
	var mycharts = echarts.init(document.getElementById('charts'))
		option = {
	    dataRange: {
	    	show:false,
	        x: 'left',
	        y: 'bottom',
	        splitList: [
	            {start: 5, end: 5, color: 'orange'},//当值为5时,区域背景
	            {start: 10, end: 10, color: '#ff6300'},//当值为10时,区域背景
	            {start: 15, end: 15, color: '#ccc'},//当值为15时,区域背景
	        ],
	    },
	    series : [
	        {
	            name: '市场分布',
	            type: 'map',
	            mapType: 'china',
	            //hoverable: false,
	            roam: false,
	            itemStyle:{
		                normal:{label:{show:true}},
		                emphasis:{label:{show:false}}
		            },
	            data:[],
	        }
	    ],
	    animation:false
	   
	};
	var ini_data=[];//初始化省份数组
	var provArr = ['河北', '河南', '云南', '辽宁', '黑龙江', '湖南', '安徽','山东'];//获取的省份,有可能是从后台获取
	//正则省份,将省与市的字眼去掉,框架不识别
    for(var i=0;i<provArr.length;i++){
    	var str = provArr[i];
		var re = /省|市/g;  //全局匹配
		var str2 ={name:str.replace(re,''),value: 5};//拼接对象数组
		ini_data.push(str2);
    }
    option.series[0].data=ini_data;//将拼接好的数组赋给参数集合
    mycharts.setOption(option);//跟新图表
	//鼠标滑过事件
	var testStr=','+provArr.join(",")+","; 
	mycharts.on('hover', function (param){
		if(testStr.indexOf(","+param.name+",")!=-1){
			return false;
		}else{
			param.value=15;
			mycharts.setOption(option);
		}
	});
	
	//点击事件
	mycharts.on('click', function (params) {//点击事件
			select_province(params.name);
	});
	//初始化省颜色
	function ini_province(){
		var ini_len=option.series[0].data.length;
		for(var i=0;i<ini_len;i++){
			//初始化颜色
			option.series[0].data[i].value=5;
			mycharts.setOption(option);
		}
		
	}
	//选中省颜色
	function select_province(province_name){
		var len=option.series[0].data.length;
		for(var i=0;i<len;i++){
			if(option.series[0].data[i].name==province_name){//如果匹配正确
				//先归零
				ini_province();
				//改变颜色
				option.series[0].data[i].value=10;
				mycharts.setOption(option);
			}
		}
	}
	</script>
</html>

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179655.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java过滤器和拦截器的区别_spring拦截器和过滤器

    java过滤器和拦截器的区别_spring拦截器和过滤器集成拦截器登录验证为例添加拦截器public class LoginInterceptor implements HandlerInterceptor { private Logger log = LoggerFactory.getLogger(getClass()); //Controller逻辑执行之前 @Override public boolean preHandle(HttpServletRequest request, HttpServletRe

    2022年8月9日
    7
  • @JsonFormat、@JSONField、@DateTimeFormat的使用以及其区别[通俗易懂]

    三者出处1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。2、JSONField来源于fastjson,是阿里巴巴…

    2022年4月17日
    53
  • Anaconda和Pycharm安装和配置教程[通俗易懂]

    Anaconda和Pycharm安装和配置教程[通俗易懂]1、下载Anaconda2(最好选Python2.7的,兼容性好点)在官网下载:https://www.continuum.io/downloads新路径https://www.anaconda.com/distribution/2、安装Pycharm(顺便激活成功教程,不需要激活成功教程工具)默认下一步,安装好就OK了。手动配置Pycharm所用解释器3、打开“文件”—“设置”,它会自动检测…

    2022年8月27日
    7
  • Oracle11g_32/64软件百度云下载以及安装教程

    Oracle11g_32/64软件百度云下载以及安装教程解压后的目录点击“软件”后的目录点击32/64位系统后的目录注:文档中有安装教程百度云下载地址链接:https://pan.baidu.com/s/1PmTfXZp-bT6poghP7bNcgA提取码:dr1x复制这段内容后打开百度网盘手机App,操作更方便哦…

    2022年5月29日
    30
  • linux vim :E325 解决办法[通俗易懂]

    linux vim :E325 解决办法[通俗易懂]在终端中输入ls-la找到.swp文件(这个文件是个隐藏文件,所以删除时要加上.),然后rm.你的swp文件。

    2022年5月16日
    32
  • 建立友好城市有什么用_缔结友好城市

    建立友好城市有什么用_缔结友好城市原题连接Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下,被批准的申请尽量多。输入格式第1行,一个整数N,表示城市数。第2行到第n+1行,每行两个整数,中间用1个空格隔开,分别表示南岸和

    2022年8月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号