ECharts之类型map(省级,地级市)附(世界地图、中国、省份、地级市地图Json文件)

ECharts之类型map(省级,地级市)

一、效果:

1.广东地图

2.深圳地图

二、项目结构:

1.广东地图

2.深圳地图

三、项目介绍:

1.广东地图:

地图包含三个模块,①广东地图图表是用geo,不是series因为只作为背景(可捕捉点击地级市事件)。②地图上的条形图是根据坐标地位的③左下角的条形图是根据grid来定位的。

2.深圳市地图:(与广东地图一样)

四、源码

1.广东地图:
  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <link rel='icon' href='w.ico' type='image/x-icon'>
  5     <title>广东地图2D</title>
  6     <meta http-equiv="content-type" content="text/html; charset=utf-8">
  7     <script src="echarts.min.js"></script>
  8     <script src="echarts-gl.min.js"></script>
  9     <!-- <script src="http://echarts.baidu.com/resource/echarts-gl-latest/dist/echarts-gl.min.js"></script> -->
 10     <script src="guangdong.js"></script>
 11     <script src="jquery-3.2.1.js"></script>
 12     
 13     <style type="text/css">
 14     #id1 {
 15 
 16         border:2px solid green;
 17         height: 450px;
 18         
 19     }
 20     
 21 </style>
 22 
 23 </head>
 24 
 25 <body>
 26     <div id="id1"></div>
 27     
 28     
 29     <script>
 30         var rawData = [
 31         {name: '珠海市',value:130},
 32         {name: '广州市',value: 50},
 33         {name: '中山市',value:30},
 34         {name: '佛山市',value: 50},
 35         {name: '清远市',value:30},
 36         {name: '梅州市',value: 50},
 37         {name: '汕头市',value:30},
 38         {name: '东莞市',value: 50},
 39         {name: '惠州市',value:30},
 40         {name: '深圳市',value: 50}
 41         ];
 42         
 43         function Map(id,cityData){     
 44             
 45             function sortRule(a,b){return a.value-b.value;}
 46             cityData.sort(sortRule);
 47             var name=cityData.map(name=>name.name);
 48 
 49             var chart =  echarts.init(document.getElementById(id));
 50 
 51             var geoCoordMap = {
 52             '珠海市': [113.353986,21.924979]
 53             ,'广州市':[113.480637,23.125178]
 54             ,'湛江市':[110.264977,21.274898]
 55             ,'茂名市':[110.919229,21.659751]
 56             ,'阳江市':[111.825107,21.859222]
 57             ,'云浮市':[112.044439,22.629801]
 58             ,'肇庆市':[112.472529,23.051546]
 59             ,'江门市':[112.894942,22.090431]
 60             ,'中山市':[113.382391,22.321113]
 61             ,'佛山市':[113.022717,22.828762]
 62             ,'清远市':[113.051227,23.685022]
 63             ,'韶关市':[113.591544,24.501322]
 64             ,'河源市':[114.897802,23.746266]
 65             ,'梅州市':[116.117582,24.099112]
 66             ,'潮州市':[116.692301,23.661701]
 67             ,'揭阳市':[116.255733,23.143778]
 68             ,'汕头市':[116.708463,22.87102]
 69             ,'汕尾市':[115.364238,22.774485]
 70             ,'深圳市':[114.085947,22.347]
 71             ,'东莞市':[113.746262,22.746237]
 72             ,'惠州市':[114.412599,23.079404]
 73         };
 74 
 75         var option = {
 76             legend: [],
 77             xAxis: [{
 78                 type: "value",
 79                 axisLine: {
 80                     show: false
 81                 },
 82                 axisTick: {
 83                     show: false
 84                 },
 85                 axisLabel: {
 86                     show: false
 87                 },
 88                 splitLine: {
 89                     show: false
 90                 }
 91             },],
 92             yAxis: [{
 93                 type: "category",
 94                 
 95                 axisLine: {
 96                     show: false
 97                 },
 98                 axisTick: {
 99                     show: false,
100                     alignWithLabel: true
101                 },
102                 axisLabel: {
103                     textStyle:{
104                        show:false
105                     }
106                 },
107                 data:name,
108             },],
109             grid: [{
110                 left: "70%",
111                 right: "20",
112                 bottom: "10",
113                 top:'60%',
114                 containLabel: true
115             },],
116             title:[{
117                 text:'全省安全态势',
118                 x:0,
119                 textStyle:{
120                     color:'rgb(0,147,203)',
121                     fontSize:14
122                 }
123             },{
124                 text: "综合安全事件影响排名Top10",
125                 textStyle: {
126                     color: "#000",
127                     fontWeight: "bold",
128                     fontSize: 14
129                 },
130                 top: "55%",
131                 left: "69%"
132             }],
133             tooltip:[{
134                 // formatter:function(params){
135                 //     console.log(params)
136                 //     var content='',
137                 //     content=params.name+params.value[0]+params.value[1]+params.value[2];
138                 //     return content;
139                 // },
140                 show:true,
141             }],
142             backgroundColor:'#fff',
143             // visualMap: {
144             //     show: false,
145             //     min: 0,
146             //     max: 3000,
147             //     inRange: {
148             //         color: ['#00ffff', '#006edd'],
149             //          color: ['#00467F', '#A5CC82']
150             //     },
151             //     calculable:true
152 
153             // },
154 
155             geo:{
156 
157                 show:true,
158                 map:'广东',
159                 type:'map',
160                 label: {
161                     normal: {
162                         show: false
163                     },
164                     emphasis: {
165                         show: true,
166                         fontSize:15,
167                         fontWeight:'bold',
168                         color:'rgb(80,50,180)',
169                     }
170                 },
171                 roam: false,
172                 itemStyle: {
173                     normal: {
174                         areaColor: ['rgb(0,90,157)'],
175                         borderColor: '#fff',
176                         borderWidth: '0.8',
177                     },
178                     emphasis: {
179                         areaColor: '#2B91B7',
180                     }
181                 }
182             },
183             series: [{
184                 name: "安全事件数量",
185                 type: "bar",
186                 data: cityData,
187                 barWidth:7,
188                 barCategoryGap: "50%",
189                 label: {
190                     normal: {
191                         left:'right',
192                         show: true,
193                         position: "right",
194                         formatter: function(params) {
195                             console.log(params);
196                             return params.data.value;
197                         },
198                         textStyle: {
199                     color: "#000" //color of value
200                         }
201                     }
202                 },
203         itemStyle: {
204             normal: {
205                 color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
206                     offset: 0,
207                     color: "rgb(231,91,250)" // 0% 处的颜色
208                 }, {
209                     offset: 1,
210                     color: "rgb(80,50,180)" // 100% 处的颜色
211                 }], false),
212                 barBorderRadius: [30, 30,30, 30],
213             }
214         }
215     },]
216 
217         };//option
218         chart.setOption(option);
219         
220         function renderEachCity() {  
221             var width=$('#id1').width();
222             var height=$('#id1').height();
223             // option.xAxis.push();
224             // option.yAxis.push();
225             // option.grid.push();
226             // option.series.push();
227             echarts.util.each(rawData, function(dataItem, idx) {
228 
229                 var geoCoord = geoCoordMap[dataItem.name];
230 
231                 var coord = chart.convertToPixel('geo', geoCoord);
232                 console.log(geoCoord+":"+coord);
233                 idx += '';
234 
235 
236                 option.xAxis.push({
237                     id: idx,
238                     gridId: idx,
239                     type: 'category',
240                     show: false
241                 });
242                 option.yAxis.push({
243                     id: idx,
244                     gridId: idx,
245                     show: false
246                 });
247                 option.grid.push({
248                     id: idx,
249                      10,
250                     height: (dataItem.value),
251                     left: coord[0],
252                     bottom:height-coord[1]+10,
253                 });
254 
255 
256                 option.series.push({
257                     name:dataItem.name,
258                     type: 'bar',
259                     xAxisId: idx,
260                     yAxisId: idx,
261                     road:true,
262                     itemStyle: {
263                         normal: {
264                             color:new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
265                                 offset: 0,
266                                 color: 'rgba(231,91,250,1)'
267                             }, {
268                                 offset: 1,
269                                 color: 'rgba(80,50,180,0.9)'
270                             }], false),
271                             barBorderRadius: [30, 30,30, 30],
272                              borderColor:'rgba(255,255,255,0.8)',
273                         },
274                         emphasis:{
275                             color:new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
276                                 offset: 1,
277                                 color: 'rgb(231,91,250)'
278                             }, {
279                                 offset: 0,
280                                 color: 'rgb(80,50,180)'
281                             }], false)
282                         }
283                     },
284                     data: [dataItem.value]
285                 });
286 
287 
288             });
289             chart.setOption(option);
290         }
291 
292         renderEachCity();
293 
294         
295         chart.on('click',function(params){console.log(params);})
296 
297     }
298     Map('id1',rawData);
299 </script>
300 </body>
301 </html>
View Code

2.深圳市地图:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <link rel='icon' href='w.ico' type='image/x-icon'>
  5     <title>地级市地图2D</title>
  6     <meta http-equiv="content-type" content="text/html; charset=utf-8">
  7     <script src="echarts.min.js"></script>
  8     <script src="echarts-gl.min.js"></script>
  9     <!-- <script src="http://echarts.baidu.com/resource/echarts-gl-latest/dist/echarts-gl.min.js"></script> -->
 10     <script src="guangdong.js"></script>
 11     <script src="jquery-3.2.1.js"></script>
 12     
 13     <style type="text/css">
 14     #id1 {
 15 
 16         border:2px solid green;
 17         height: 530px;
 18         width:1097px;
 19         
 20     }
 21     
 22 </style>
 23 
 24 </head>
 25 
 26 <body>
 27     <div id="id1"></div>
 28     
 29     
 30     <script>
 31         var rawData = [
 32         {name: '时代互联',value:130},
 33         {name: '朗达互动',value: 50}
 34         
 35         ];
 36         
 37         function Map(id,cityData,cityName){     
 38             var name=cityData.map(name=>name.name);
 39 
 40 
 41             var chart =  echarts.init(document.getElementById(id));
 42             $.getJSON('广东/'+cityName+'.json', function (usaJson) {
 43              echarts.registerMap('city', usaJson);
 44             var geoCoordMap = {
 45             '时代互联':[114.085947,22.547],
 46             '朗达互动':[114.005947,22.547],
 47             '飞远网络':[113.353986,21.924979],
 48             '科飞科技':[113.353986,21.924979],
 49             '明飞互联':[113.353986,21.924979],
 50             '万网网络':[113.353986,21.924979],
 51             '大朗科技':[113.353986,21.924979],
 52             '腾度科技':[112.353986,22.924979]
 53             
 54            
 55           
 56         };
 57 
 58         var option = {
 59             legend: [],
 60             xAxis: [{
 61                 type: "value",
 62                 axisLine: {
 63                     show: false
 64                 },
 65                 axisTick: {
 66                     show: false
 67                 },
 68                 axisLabel: {
 69                     show: false
 70                 },
 71                 splitLine: {
 72                     show: false
 73                 }
 74             },],
 75             yAxis: [{
 76                 type: "category",
 77                 
 78                 axisLine: {
 79                     show: false
 80                 },
 81                 axisTick: {
 82                     show: false,
 83                     alignWithLabel: true
 84                 },
 85                 axisLabel: {
 86                     textStyle:{
 87                        show:false
 88                     }
 89                 },
 90                 data:name,
 91             },],
 92             grid: [{
 93                 left: "70%",
 94                 right: "20",
 95                 bottom: "10",
 96                 top:'60%',
 97                 containLabel: true
 98             },],
 99             title:[{
100                 text:cityName+'IDC安全态势',
101                 x:0,
102                 textStyle:{
103                     color:'rgb(0,147,203)',
104                     fontSize:14
105                 }
106             },{
107                 text: "综合安全事件影响排名Top10",
108                 textStyle: {
109                     color: "#000",
110                     fontWeight: "bold",
111                     fontSize: 14
112                 },
113                 top: "55%",
114                 left: "69%"
115             }],
116             tooltip:[{
117                 // formatter:function(params){
118                 //     console.log(params)
119                 //     var content='',
120                 //     content=params.name+params.value[0]+params.value[1]+params.value[2];
121                 //     return content;
122                 // },
123                 show:true,
124             }],
125             backgroundColor:'#fff',
126             // visualMap: {
127             //     show: false,
128             //     min: 0,
129             //     max: 3000,
130             //     inRange: {
131             //         color: ['#00ffff', '#006edd'],
132             //          color: ['#00467F', '#A5CC82']
133             //     },
134             //     calculable:true
135 
136             // },
137 
138             geo:{
139                 left:'10',
140                 show:true,
141                 map:'city',
142                 type:'map',
143                 zlevel:0,
144                 label: {
145                     normal: {
146                         show: false
147                     },
148                     emphasis: {
149                         show: true,
150                         fontSize:20,
151                         color:'rgb(255,255,255)',
152                     }
153                 },
154                 roam: false,
155                 itemStyle: {
156                     normal: {
157                         color: 'rgb(0,90,157)',
158                         borderColor: 'rgb(0,90,157)',
159                         borderWidth: 1,
160                     },
161                     emphasis: {
162                         areaColor: '#2B91B7',
163                         
164                             
165                         
166                     }
167                 }
168             },
169             series: [{
170                 name: "安全事件数量",
171                 type: "bar",
172                 data: cityData,
173                 barWidth:7,
174                 barCategoryGap: "50%",
175                  zlevel:2,
176                 label: {
177                     normal: {
178                         left:'right',
179                         show: true,
180                         position: "right",
181                         formatter: function(params) {
182                             console.log(params);
183                             return params.data.value;
184                         },
185                         textStyle: {
186                     color: "#000" //color of value
187                         }
188                     }
189                 },
190         itemStyle: {
191             normal: {
192                 color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
193                     offset: 0,
194                     color: "rgb(231,91,250)" // 0% 处的颜色
195                 }, {
196                     offset: 1,
197                     color: "rgb(80,50,180)" // 100% 处的颜色
198                 }], false),
199                 barBorderRadius: [30, 30,30, 30],
200             }
201         }
202     },]
203 
204         };//option
205         chart.setOption(option);
206         
207         function renderEachCity() {  
208             var width=$('#'+id).width();
209             var height=$('#'+id).height();
210             // option.xAxis.push();
211             // option.yAxis.push();
212             // option.grid.push();
213             // option.series.push();
214             echarts.util.each(rawData, function(dataItem, idx) {
215 
216                 var geoCoord = geoCoordMap[dataItem.name];
217                 console.log(dataItem.name);
218                 var coord = chart.convertToPixel('geo', geoCoord);
219                 console.log(geoCoord+":"+coord);
220                 idx += '';
221 
222                 console.log(dataItem.name)
223                 option.xAxis.push({
224                     id: idx,
225                     gridId: idx,
226                     type: 'category',
227                     //show: true,
228                     data:[dataItem.name],
229                     boundaryGap:true,
230                     axisLine: {
231                         show: false
232                     },
233                     axisTick: {
234                         
235                         
236                         show: false,
237                         
238                     },
239                     axisLabel: {
240                         interval:0,
241                         fontSize:10,
242                         
243                         color: "#fff",
244                         
245                         
246                         
247                     }
248                 });
249                 option.yAxis.push({
250                     id: idx,
251                     gridId: idx,
252                     show: false
253                 });
254                 option.grid.push({
255                     id: idx,
256                      10,
257                     height: (dataItem.value),
258                     left: coord[0],
259                     bottom:height-coord[1]+10,
260                 });
261 
262 
263                 option.series.push({
264                     name:dataItem.name,
265                     type: 'bar',
266                     xAxisId: idx,
267                     yAxisId: idx,
268                      zlevel:1,
269                     road:true,
270                     itemStyle: {
271                         normal: {
272                             color:new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
273                                 offset: 0,
274                                 color: 'rgba(231,91,250,1)'
275                             }, {
276                                 offset: 1,
277                                 color: 'rgba(80,50,180,0.8)'
278                             }], false),
279                             borderColor:'rgba(255,255,255,0.8)',
280                             barBorderRadius: [30, 30,30, 30],
281                         },
282                         emphasis:{
283                             color:new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
284                                 offset: 1,
285                                 color: 'rgb(231,91,250)'
286                             }, {
287                                 offset: 0,
288                                 color: 'rgb(80,50,180)'
289                             }], false)
290                         }
291                     },
292                     data: [dataItem.value]
293                 });
294 
295 
296             });
297             chart.setOption(option);
298         }
299 
300         renderEachCity();
301 
302         
303         chart.on('click',function(params){console.log(params);})
304     });
305     }
306     Map('id1',rawData,'深圳市');
307 </script>
308 </body>
309 </html>
View Code

五、github源码链接(及地图文件):

Github

原文地址:https://www.cnblogs.com/carsonwuu/p/8566621.html