echarts之基于geojson的自定义地图

应用场景:需要在平面图或者特殊地理区域上展示数据,比如


geojson作为echarts的地图数据源,能实现简单平面图(如果是立体图就需要研究svg)上的数据交互。优点:技术低,学习起来没难度;缺点:耗时耗力,复杂的平面图有难度。

实现步骤: 1、在 http://geojson.io/ 上画自己需要的平面图并导出为geojson

勾画区域时添加name属性



定义一个js文件 ,变量内容为上面制作的topojson文件


完整简单demo代码如下:

<!DOCTYPE html>
<html>
 <head> 
  <meta charset="utf-8" /> 
  <title>巡检异常读数地图</title> 
 </head> 
 <body> 
  <!--<div id="main" style="height: 714px;weight:662px"></div>--> 
  <div id="main" style="height:714px"></div> 
  <script type="text/JavaScript" src="echarts.min.js"></script> 
  <script type="text/javascript" src="test2map.js"></script> 
  <script type="text/javascript">
		var testData = [
		                  {
		                	name:'区域1',value:'480'
		                  },
		                  {
		                	name:'区域2',value:'900'
		                  },
		                  {
		                	  name:'区域3',value:'1939'
		                  }
		                  ];
		//获取最大最小值 以便做数据筛选器				
		var maxData = 0;
		var minData = 0;
		for(var i = 0;i<testData.length;i++){
			var value = parseInt(testData[i].value);
			if(value > maxData){
				maxData = value;
			}
			if(value<minData){
				minData = value;
			}
		}
		
		var option = {
			
			tooltip : {
				trigger : 'item',
				formatter : '{b}<br/>{c} (人次)'
			},
			toolbox : {
				show : true,
				orient : 'vertical',
				x : 'right',
				y : 'center',
				feature : {
					mark : {
						show : true
					},
					saveAsImage : {
						show : true
					}
				}
			},
			dataRange : {
				min : minData*0.8,
				max : maxData*1.2,
				text : [ '生意好', '生意不好' ],
				realtime : false,
				calculable : true,
				x: 'right',
				y: 'top',
				orient: 'horizontal'
			},
			series : [ {
				name : '日客户流量',
				type : 'map',
				mapType : 'mymap', // 自定义扩展图表类型
				itemStyle : {
					normal : {
						label : {
							show : true
						}
					},
					emphasis : {
						label : {
							show : true
						}
					}
				},
				data : testData,
				// 文本位置修正
				textFixed : {
					'Yau Tsim Mong' : [ -10, 0 ]
				},
				// 文本直接经纬度定位
				geoCoord : {
					'Islands' : [ 113.95, 22.26 ]
				}
			} ]
		};
		//series里定义的mymap,地图js文件里定义的testJson
		echarts.registerMap('mymap', testJson);

		var chart = echarts.init(document.getElementById('main'));

		chart.setOption(option);
	</script>  
 </body>
</html>
效果:



  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值