1. 程式人生 > >echarts之基於geojson的自定義地圖

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>
效果: