06-echars中异步加载数据及制作地图

注意

1.要在html文件中引入jquery.js文件
2.安装Live Server插件,在html页面单击右键,选择open with live server打开。

1. 简单数据异步加载

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>异步加载数据</title>
</head>

<body>
  <script src="js/echarts.js"></script>
  <script src="js/jquery.js"></script>
  <div id="box" style="height: 400px;width: 600px"></div>
  <script>
    $.getJSON("data/task1data.json", "", function (db) {
      var myChart = echarts.init(document.getElementById('box'));
      var option = {
        title: {
          text: '异步加载数据',
          subtext: '某某',
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'shadow'
          }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        xAxis: [
          {
            type: 'category',
            data: db.xdata,
            axisTick: {
              alignWithLabel: true
            }
          }
        ],
        yAxis: [
          {
            type: 'value'
          }
        ],
        series: [
          {
            name: 'Direct',
            type: 'bar',
            barWidth: '60%',
            data: db.data
          }
        ]
      };
      myChart.setOption(option);
    })

  </script>
</body>

</html>

json数据:task1data.json

{
    "data": [
        10,
        52,
        200,
        334,
        390,
        330,
        220
    ],
    "xdata": [
        "衬衫",
        "羊毛衫",
        "雪纺衫",
        "裤子",
        "高跟鞋",
        "袜子"
    ]
}

运行结果:

2. 咖啡店各年订单数据异步加载

<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<script type="text/javascript" src='js/echarts.js'></script>
	<script type="text/javascript" src='js/jquery.js'></script>
</head>

<body>
	<div id="main1" style="width: 600px; height:400px"></div>
	<div id="main2" style="width: 600px; height:400px"></div>
	<script type="text/javascript">
	$.getJSON("data/咖啡店各年订单.json", "", function(data) {
		//基于准备好的dom,初始化ECharts图表
		var myChart1 = echarts.init(document.getElementById("main1"));
		var option1 = {  //指定第1个图表option1的配置项和数据
			color: ['green', 'blue','red','LimeGreen', 'DarkGreen','Purple'],
			backgroundColor: 'rgba(128,128,128,0.1)',
			title: { text: '咖啡店各年订单量占比情况', x: 'center' },
			legend: {
				orient: 'vertical', x: 15, y: 15,
				data: data.product
			},
			series: [{  
				name: '总订单量:', type: 'pie',
				radius: '70%', center: ['50%', 190],
				data: data.data
			}]
		};
		myChart1.setOption(option1);  //使用指定的配置项和数据显示饼图
		//基于准备好的dom,初始化ECharts图表
		var myChart2 = echarts.init(document.getElementById("main2"));
		var option2 = {  //指定第2个图表的配置项和数据
			color: ['green', 'blue','red','LimeGreen', 'DarkGreen','Purple'],
			backgroundColor: 'rgba(128,128,128,0.1)',
			xAxis: [{
				type: 'category',
				data: data.product
			}],  //配置第2个图表的x轴坐标系
			yAxis: [{ type: 'value', splitArea: { show: true } }],  //配置第2个图表的y轴坐标系
			series: [
				{
					name:data.names1,
					type:'line',
					data:data.values1,
				},
				{
					name:data.names2,
					type:'line',
					data:data.values2,
				},
				{
					name:data.names3,
					type:'line',
					data:data.values3,
				},
				{
					name:data.names4,
					type:'line',
					data:data.values4,
				}
			]
		};
		myChart2.setOption(option2);  //使用指定的配置项和数据显示堆叠柱状图
		
		
		//多图表联动配置方法1:分别设置每个echarts对象的group值
		//myChart1.group = 'group1';
		//myChart2.group = 'group1';
		//echarts.connect('group1');
		
 	    //多图表联动配置方法2:直接传入需要联动的echarts对象myChart1,myChart2
	    echarts.connect([myChart1,myChart2]);
		})
	</script>
</body>

</html>

json数据:咖啡店各年订单.json

{
    "data":[
    {"value":172.9, "name":"2012年"},{"value":232.8, "name":"2013年"},
    {"value":254.5, "name":"2014年"},{"value":177.8, "name":"2015年"},
    {"value":206.3, "name":"2016年"},{"value":235.4, "name":"2017年"}
    ],
    "product":["2012年", "2013年", "2014年", "2015年", "2016年", "2017年"],
    "values1":[56.5, 82.1, 88.7, 70.1, 53.4, 85.1],
    "values2":[51.1, 51.4, 55.1, 53.3, 73.8, 68.7],
    "values3":[40.1, 62.2, 69.5, 36.4, 45.2, 32.5],
    "values4":[25.2, 37.1, 41.2, 18, 33.9, 49.1],
    "names1":"Milk Tea",
    "names2":"Matcha Latte",
    "names3":"Cheese Cocoa",
    "names4":"Walnut Brownie"
    } 

运行结果:

3. 参考Echarts官网示例,下载美国地图json数据,制作美国地图

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <script type="text/javascript" src='js/echarts.js'></script>
  <script type="text/javascript" src='js/jquery.js'></script>
</head>

<body>
  <div id="main" style="width: 600px; height:400px"></div>
  <script type="text/javascript">
   var myChart = echarts.init(document.getElementById("main"));
   $.get('data/USA.json', function (usaJson) {
  myChart.hideLoading();
  echarts.registerMap('USA', usaJson, {
    Alaska: {
      left: -131,
      top: 25,
      width: 15
    },
    Hawaii: {
      left: -110,
      top: 28,
      width: 5
    },
    'Puerto Rico': {
      left: -76,
      top: 26,
      width: 2
    }
  });
  option = {
    title: {
      text: 'USA Population Estimates (2012)',
      subtext: 'Data from www.census.gov',
      sublink: 'http://www.census.gov/popest/data/datasets.html',
      left: 'right'
    },
    tooltip: {
      trigger: 'item',
      showDelay: 0,
      transitionDuration: 0.2
    },
    visualMap: {
      left: 'right',
      min: 500000,
      max: 38000000,
      inRange: {
        color: [
          '#313695',
          '#4575b4',
          '#74add1',
          '#abd9e9',
          '#e0f3f8',
          '#ffffbf',
          '#fee090',
          '#fdae61',
          '#f46d43',
          '#d73027',
          '#a50026'
        ]
      },
      text: ['High', 'Low'],
      calculable: true
    },
    toolbox: {
      show: true,
      //orient: 'vertical',
      left: 'left',
      top: 'top',
      feature: {
        dataView: { readOnly: false },
        restore: {},
        saveAsImage: {}
      }
    },
    series: [
      {
        name: 'USA PopEstimates',
        type: 'map',
        roam: true,
        map: 'USA',
        emphasis: {
          label: {
            show: true
          }
        },
        data: [
          { name: 'Alabama', value: 4822023 },
          { name: 'Alaska', value: 731449 },
          { name: 'Arizona', value: 6553255 },
          { name: 'Arkansas', value: 2949131 },
          { name: 'California', value: 38041430 },
          { name: 'Colorado', value: 5187582 },
          { name: 'Connecticut', value: 3590347 },
          { name: 'Delaware', value: 917092 },
          { name: 'District of Columbia', value: 632323 },
          { name: 'Florida', value: 19317568 },
          { name: 'Georgia', value: 9919945 },
          { name: 'Hawaii', value: 1392313 },
          { name: 'Idaho', value: 1595728 },
          { name: 'Illinois', value: 12875255 },
          { name: 'Indiana', value: 6537334 },
          { name: 'Iowa', value: 3074186 },
          { name: 'Kansas', value: 2885905 },
          { name: 'Kentucky', value: 4380415 },
          { name: 'Louisiana', value: 4601893 },
          { name: 'Maine', value: 1329192 },
          { name: 'Maryland', value: 5884563 },
          { name: 'Massachusetts', value: 6646144 },
          { name: 'Michigan', value: 9883360 },
          { name: 'Minnesota', value: 5379139 },
          { name: 'Mississippi', value: 2984926 },
          { name: 'Missouri', value: 6021988 },
          { name: 'Montana', value: 1005141 },
          { name: 'Nebraska', value: 1855525 },
          { name: 'Nevada', value: 2758931 },
          { name: 'New Hampshire', value: 1320718 },
          { name: 'New Jersey', value: 8864590 },
          { name: 'New Mexico', value: 2085538 },
          { name: 'New York', value: 19570261 },
          { name: 'North Carolina', value: 9752073 },
          { name: 'North Dakota', value: 699628 },
          { name: 'Ohio', value: 11544225 },
          { name: 'Oklahoma', value: 3814820 },
          { name: 'Oregon', value: 3899353 },
          { name: 'Pennsylvania', value: 12763536 },
          { name: 'Rhode Island', value: 1050292 },
          { name: 'South Carolina', value: 4723723 },
          { name: 'South Dakota', value: 833354 },
          { name: 'Tennessee', value: 6456243 },
          { name: 'Texas', value: 26059203 },
          { name: 'Utah', value: 2855287 },
          { name: 'Vermont', value: 626011 },
          { name: 'Virginia', value: 8185867 },
          { name: 'Washington', value: 6897012 },
          { name: 'West Virginia', value: 1855413 },
          { name: 'Wisconsin', value: 5726398 },
          { name: 'Wyoming', value: 576412 },
          { name: 'Puerto Rico', value: 3667084 }
        ]
      }
    ]
  };
  myChart.setOption(option);
});
  </script>
</body>

</html>

运行结果:

4. 制作上海市地图

参考https://www.isqqw.com/echartsdetail?id=16586
json数据下载:https://www.isqqw.com/asset/get/s/data-1634526956327-oeoy5N0nW.geoJson

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <script type="text/javascript" src='js/echarts.js'></script>
    <script type="text/javascript" src='js/jquery.js'></script>
</head>

<body>
    <div id="main" style="width: 800px; height:600px"></div>
    <script type="text/javascript">
        var myChart = echarts.init(document.getElementById("main"));
        var uploadedDataURL = "data/上海map.geoJson";
        myChart.showLoading();
        $.getJSON(uploadedDataURL, function (geoJson) {
            echarts.registerMap('shanghai', geoJson);
            myChart.hideLoading();
            var geoCoordMap = {
                '黄浦区': [121.483572, 31.215946],
                '徐汇区': [121.439405, 31.162992],
                '长宁区': [121.380949, 31.20737],
                '静安区': [121.450659, 31.270821],
                '普陀区': [121.392042, 31.257895],
                '虹口区': [121.485443, 31.276649],
                '杨浦区': [121.529302, 31.29835],
                '闵行区': [121.418901, 31.087213],
                '宝山区': [121.404861, 31.392111],
                '嘉定区': [121.24439, 31.358138],
                '浦东新区': [121.742177, 31.083823],
                '金山区': [121.255144, 30.818932],
                '松江区': [121.220231, 31.015194],
                '青浦区': [121.085188, 31.124681],
                '奉贤区': [121.56251, 30.897998],
                '崇明区': [121.568484, 31.635916]
            }
            var data = [
                { name: '黄浦区', value: 11 },
                { name: '徐汇区', value: 4 },
                { name: '长宁区', value: 22 },
                { name: '静安区', value: 14 },
                { name: '普陀区', value: 19 },
                { name: '虹口区', value: 7 },
                { name: '杨浦区', value: 14 },
                { name: '闵行区', value: 22 },
                { name: '宝山区', value: 17 },
                { name: '嘉定区', value: 36 },
                { name: '浦东新区', value: 45 },
                { name: '金山区', value: 43 },
                { name: '松江区', value: 23 },
                { name: '青浦区', value: 17 },
                { name: '奉贤区', value: 32 },
                { name: '崇明区', value: 53 }
            ];
            var max = 480, min = 9; // todo 
            var maxSize4Pin = 100, minSize4Pin = 20;

            var convertData = function (data) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                    var geoCoord = geoCoordMap[data[i].name];
                    if (geoCoord) {
                        res.push({
                            name: data[i].name,
                            value: geoCoord.concat(data[i].value)
                        });
                    }
                }
                return res;
            };


            option = {
                backgroundColor: '#1D346F',
                title: {
                    text: '',
                    subtext: '',
                    x: 'center',
                    textStyle: {
                        color: '#ccc'
                    }
                },
                tooltip: {
                    trigger: 'item',
                    formatter: function (params) {
                        if (typeof (params.value)[2] == "undefined") {
                            return params.name + ' : ' + params.value;
                        } else {
                            return params.name + ' : ' + params.value[2];
                        }
                    }
                },

                visualMap: {
                    show: false,
                    min: 0,
                    max: 500,
                    left: 'left',
                    top: 'bottom',
                    text: ['高', '低'], // 文本,默认为数值文本
                    calculable: true,
                    seriesIndex: [1],
                    inRange: {
                        // color: ['#3B5077', '#031525'] // 蓝黑
                        // color: ['#ffc0cb', '#800080'] // 红紫
                        // color: ['#3C3B3F', '#605C3C'] // 黑绿
                        // color: ['#0f0c29', '#302b63', '#24243e'] // 黑紫黑
                        // color: ['#23074d', '#cc5333'] // 紫红
                        // color: ['#00467F', '#A5CC82'] // 蓝绿
                        color: ['#1488CC', '#2B32B2'] // 浅蓝
                        // color: ['#00467F', '#A5CC82'] // 蓝绿
                        // color: ['#00467F', '#A5CC82'] // 蓝绿
                        // color: ['#00467F', '#A5CC82'] // 蓝绿
                        // color: ['#00467F', '#A5CC82'] // 蓝绿

                    }
                },

                geo: {
                    show: true,
                    map: 'shanghai',
                    label: {
                        normal: {
                            show: false
                        },
                        emphasis: {
                            show: false,
                        }
                    },
                    roam: true,
                    itemStyle: {
                        normal: {
                            areaColor: '#1D346F',
                            borderWidth: 0,
                            shadowColor: '#23074d',
                            shadowBlur: 30,
                            shadowOffsetX: -2,
                            shadowOffsetY: 5,
                        },
                        emphasis: {
                            areaColor: '#2a333d',
                        },
                    },
                },
                series: [

                    {
                        type: 'map',
                        map: 'shanghai',
                        geoIndex: 0,
                        aspectScale: 0.75, //长宽比
                        showLegendSymbol: false, // 存在legend时显示
                        label: {
                            normal: {
                                show: false
                            },
                            emphasis: {
                                show: false,
                                textStyle: {
                                    color: '#fff'
                                }
                            }
                        },
                        roam: true,
                        itemStyle: {
                            normal: {
                                areaColor: '#1D346F',
                                borderColor: '#D79D3D',
                            },
                            emphasis: {
                                areaColor: '#0f2c70',
                            },
                        },
                        animation: false,
                        data: data
                    },
                    {
                        name: '点',
                        type: 'scatter',
                        coordinateSystem: 'geo',
                        symbol: 'pin',
                        symbolSize: function (val) {
                            var a = (maxSize4Pin - minSize4Pin) / (max - min);
                            var b = minSize4Pin - a * min;
                            b = maxSize4Pin - a * max;
                            return a * val[2] + b;
                        },
                        label: {
                            normal: {
                                show: true,
                                textStyle: {
                                    color: '#fff',
                                    fontSize: 9,
                                },
                                formatter(value) {
                                    return value.data.value[2]
                                }
                            }
                        },
                        itemStyle: {
                            normal: {
                                areaColor: '#1D346F',
                                borderColor: '#D79D3D',
                            },
                            emphasis: {
                                areaColor: '#0f2c70',
                            },
                        },
                        data: convertData(data),
                        showEffectOn: 'render',
                        rippleEffect: {
                            brushType: 'stroke'
                        },
                        hoverAnimation: true,
                        zlevel: 6
                    },
                    {
                        name: 'Top 5',
                        type: 'effectScatter',
                        coordinateSystem: 'geo',
                        data: convertData(data.sort(function (a, b) {
                            return b.value - a.value;
                        }).slice(0, 11)),
                        symbolSize: function (val) {
                            return val[2] / 10;
                        },
                        showEffectOn: 'render',
                        rippleEffect: {
                            brushType: 'stroke'
                        },
                        hoverAnimation: true,
                        label: {
                            normal: {
                                formatter: '{b}',
                                position: 'right',
                                show: true
                            }
                        },
                        itemStyle: {
                            normal: {
                                areaColor: '#1D346F',
                                borderColor: '#D79D3D',
                            },
                            emphasis: {
                                areaColor: '#0f2c70',
                            },
                        },
                        zlevel: 1
                    },

                ]
            };
            myChart.setOption(option);
        });
    </script>
</body>

</html>

运行结果:

5. 制作安徽省各市GDP变化图

参考https://www.isqqw.com/echartsdetail?id=16272

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <script type="text/javascript" src='js/echarts.js'></script>
    <script type="text/javascript" src='js/jquery.js'></script>
</head>

<body>
    <div id="main" style="width: 800px; height:600px"></div>
    <script type="text/javascript">
        var myChart = echarts.init(document.getElementById("main"));
        var uploadedDataURL = "data/anhui.json";

        var t = 1; //流入流出控制
        var r = 1; //右侧流入流出文字控制

        var geoCoordMap = {
            '合肥市': [117.25, 31.83],
            '滁州市': [118.32, 32.3],
            '芜湖市': [118.43, 31.35],
            '阜阳市': [115.38, 32.89],
            '蚌埠市': [117.39, 32.92],
            '淮南市': [116.99, 32.63],
            '马鞍山市': [118.5, 31.71],
            '安庆市': [117.05, 30.52],
            '黄山市': [118.33, 29.71],
            '铜陵市': [117.81, 30.94],
            '宿州市': [116.98, 33.64],
            '淮北市': [116.8, 33.9],
            '六安市': [116.51, 31.75],
            '池州市': [117.49, 30.66],
            '宣城市': [118.76, 30.94],
            '亳州市': [115.78, 33.84],
        };
        var d1 = {
            '合肥市': 3600,
            '芜湖市': 1600,
            '滁州市': 850,
            '阜阳市': 850,
            '安庆市': 1200,
            '马鞍山市': 1090,
            '蚌埠市': 770,
            '宿州市': 780,
            '亳州市': 615,
            '六安市': 780,
            '宣城市': 670,
            '淮南市': 720.15,
            '淮北市': 560,
            '铜陵市': 580,
            '池州市': 360,
            '黄山市': 370,
        };

        var d2 = {
            '合肥市': 4164.34,
            '芜湖市': 1873.63,
            '滁州市': 970.7,
            '阜阳市': 962.5,
            '安庆市': 1359.7,
            '马鞍山市': 1232.0,
            '蚌埠市': 890.2,
            '宿州市': 915.0,
            '亳州市': 715.7,
            '六安市': 918.2,
            '宣城市': 757.5,
            '淮南市': 781.8,
            '淮北市': 620.5,
            '铜陵市': 621.3,
            '池州市': 424.9,
            '黄山市': 424.9,
        };

        var d3 = {
            '合肥市': 4672.9,
            '芜湖市': 2099.53,
            '滁州市': 1086.1,
            '阜阳市': 1062.5,
            '安庆市': 1418.2,
            '马鞍山市': 1293.0,
            '蚌埠市': 1007.9,
            '宿州市': 842.8,
            '亳州市': 791.1,
            '六安市': 1010.3,
            '宣城市': 842.8,
            '淮南市': 819.4,
            '淮北市': 703.7,
            '铜陵市': 680.6,
            '池州市': 462.2,
            '黄山市': 470.3,
        };
        var d4 = {
            '合肥市': 5158,
            '芜湖市': 2308,
            '滁州市': 1185,
            '阜阳市': 1146,
            '安庆市': 1544,
            '马鞍山市': 1357,
            '蚌埠市': 1108,
            '宿州市': 1126,
            '亳州市': 851,
            '六安市': 1086,
            '宣城市': 913,
            '淮南市': 789,
            '淮北市': 748,
            '铜陵市': 716,
            '池州市': 504,
            '黄山市': 507,
        };

        var d5 = {
            '合肥市': 5660.3,
            '芜湖市': 2457.3,
            '滁州市': 1305.7,
            '阜阳市': 1267.4,
            '安庆市': 1613.2,
            '马鞍山市': 1365.3,
            '蚌埠市': 1253.1,
            '宿州市': 1235.8,
            '亳州市': 942.6,
            '六安市': 1143.4,
            '宣城市': 971.5,
            '淮南市': 770.6,
            '淮北市': 760.4,
            '铜陵市': 721.3,
            '池州市': 544.7,
            '黄山市': 530.6,
        };

        var d6 = {
            '合肥市': 6200,
            '芜湖市': 2660,
            '滁州市': 1418,
            '阜阳市': 1401.9,
            '安庆市': 1500,
            '马鞍山市': 1440,
            '蚌埠市': 1385.8,
            '宿州市': 1320,
            '亳州市': 1030,
            '六安市': 1108.1,
            '宣城市': 1050,
            '淮南市': 945,
            '淮北市': 780,
            '铜陵市': 960,
            '池州市': 583,
            '黄山市': 576.8,
        };

        var d7 = {
            '合肥市': 7213.45,
            '芜湖市': 3065.52,
            '滁州市': 1607.7,
            '阜阳市': 1571.1,
            '安庆市': 1708.6,
            '马鞍山市': 1738.09,
            '蚌埠市': 1550.66,
            '宿州市': 1503.91,
            '亳州市': 1184.0,
            '六安市': 1218.7,
            '宣城市': 1188.6,
            '淮南市': 1111.5,
            '淮北市': 929.0,
            '铜陵市': 1163.9,
            '池州市': 654.1,
            '黄山市': 645.7,
        };
        var d8 = {
            '合肥市': 7822.9,
            '芜湖市': 3278.53,
            '滁州市': 1801.7,
            '阜阳市': 1759.5,
            '安庆市': 1900,
            '马鞍山市': 1918.1,
            '蚌埠市': 1714.7,
            '宿州市': 1630.22,
            '亳州市': 1277.19,
            '六安市': 1288.1,
            '宣城市': 1317.2,
            '淮南市': 1133.30,
            '淮北市': 985.2,
            '铜陵市': 1222.4,
            '池州市': 684.9,
            '黄山市': 677.9,
        };
        var d9 = {
            '合肥市': 9409.4,
            '芜湖市': 3618.26,
            '滁州市': 2909.1,
            '阜阳市': 2705,
            '安庆市': 2380.5,
            '马鞍山市': 2111,
            '蚌埠市': 2057.2,
            '宿州市': 1978.75,
            '亳州市': 1749,
            '六安市': 1620.1,
            '宣城市': 1561.3,
            '淮南市': 1296.2,
            '淮北市': 1077.9,
            '铜陵市': 960.2,
            '池州市': 831.7,
            '黄山市': 818,
        };
        var d10 = {
            '合肥市': 10045.72,
            '芜湖市': 3753.02,
            '滁州市': 3032.1,
            '阜阳市': 2805.2,
            '安庆市': 2467.7,
            '马鞍山市': 2186.9,
            '蚌埠市': 2082.7,
            '宿州市': 2045,
            '亳州市': 1806.01,
            '六安市': 1669.5,
            '宣城市': 1607.5,
            '淮南市': 1337.2,
            '淮北市': 1119.1,
            '铜陵市': 1003.7,
            '池州市': 868.9,
            '黄山市': 850.4,
        };

        var colors = ['#1DE9B6', '#EEDD78', '#FFFF00', '#FFDB5C', '#37A2DA', '#04B9FF'];
        var colorIndex = 0;
        $(function () {
            var year = ['2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020'];
            var mapData = [[], [], [], [], [], [], [], [], [], [], []];

            /*柱子Y名称*/
            var categoryData = [];
            var barData = [];

            for (var key in geoCoordMap) {

                mapData[0].push({
                    year: '2011',
                    name: key,
                    value: d2[key] / 5,
                    value1: d2[key] / 5,
                });
                mapData[1].push({
                    year: '2012',
                    name: key,
                    value: d3[key] / 10,
                    value1: d3[key] / 10,
                });
                mapData[2].push({
                    year: '2013',
                    name: key,
                    value: d4[key] / 10,
                    value1: d4[key] / 10,
                });
                mapData[3].push({
                    year: '2014',
                    name: key,
                    value: d5[key] / 10,
                    value1: d5[key] / 10,
                });
                mapData[4].push({
                    year: '2015',
                    name: key,
                    value: d6[key] / 10,
                    value1: d6[key] / 10,
                });
                mapData[5].push({
                    year: '2016',
                    name: key,
                    value: d7[key] / 10,
                    value1: d7[key] / 10,
                });
                mapData[6].push({
                    year: '2017',
                    name: key,
                    value: d8[key] / 10,
                    value1: d8[key] / 10,
                });
                mapData[7].push({
                    year: '2018',
                    name: key,
                    value: d9[key] / 10,
                    value1: d9[key] / 10,
                });
                mapData[8].push({
                    year: '2019',
                    name: key,
                    value: d10[key] / 10,
                    value1: d10[key] / 10,
                });
                mapData[9].push({
                    year: '2020',
                    name: key,
                    value: d1[key] / 10,
                    value1: d1[key] / 10,
                });
            }

            for (var i = 0; i < mapData.length; i++) {
                mapData[i].sort(function sortNumber(a, b) {
                    return a.value - b.value;
                });
                barData.push([]);
                categoryData.push([]);
                for (var j = 0; j < mapData[i].length; j++) {
                    barData[i].push(mapData[i][j].value1 * 10);
                    categoryData[i].push(mapData[i][j].name);
                }
            }

            $.getJSON(uploadedDataURL, function (geoJson) {
                // echarts.registerMap(nameMap, gdMap);
                echarts.registerMap('anhui', geoJson);
                var convertData = function (data) {
                    var res = [];
                    for (var i = 0; i < data.length; i++) {
                        var geoCoord = geoCoordMap[data[i].name];
                        if (geoCoord) {
                            res.push({
                                name: data[i].name,
                                value: geoCoord.concat(data[i].value),
                            });
                        }
                    }
                    return res;
                };

                var convertToLineData = function (data, gps) {
                    var res = [];
                    for (var i = 0; i < data.length; i++) {
                        var dataItem = data[i];
                        var toCoord = geoCoordMap[dataItem.name];
                        var fromCoord = gps; //郑州
                        //  var toCoord = geoGps[Math.random()*3];
                        if (fromCoord && toCoord) {
                            if (t == 1) {
                                res.push([
                                    {
                                        coord: toCoord,
                                    },
                                    {
                                        coord: fromCoord,
                                        value: dataItem.value,
                                    },
                                ]);
                            } else {
                                res.push([
                                    {
                                        coord: fromCoord,
                                        value: dataItem.value,
                                    },
                                    {
                                        coord: toCoord,
                                    },
                                ]);
                            }
                        }
                    }
                    if (t === 0) {
                        t = 1;
                    } else {
                        t = 0;
                    }
                    return res;
                };

                optionXyMap01 = {
                    timeline: {
                        data: year,
                        axisType: 'category',
                        autoPlay: true,
                        playInterval: 1500,
                        left: '10%',
                        right: '10%',
                        bottom: '3%',
                        width: '90%',
                        //  height: null,
                        label: {
                            normal: {
                                textStyle: {
                                    color: '#ddd',
                                },
                            },
                            emphasis: {
                                textStyle: {
                                    color: '#fff',
                                },
                            },
                        },
                        symbolSize: 10,
                        lineStyle: {
                            color: '#FFFFFF',
                        },
                        checkpointStyle: {
                            borderColor: '#FFFFFF',
                            borderWidth: 2,
                        },
                        controlStyle: {
                            showNextBtn: true,
                            showPrevBtn: true,
                            normal: {
                                color: '#666',
                                borderColor: '#666',
                            },
                            emphasis: {
                                color: '#FFFFFF',
                                borderColor: '#aaa',
                            },
                        },
                    },
                    baseOption: {
                        animation: true,
                        animationDuration: 1000,
                        animationEasing: 'cubicInOut',
                        animationDurationUpdate: 1000,
                        animationEasingUpdate: 'cubicInOut',
                        grid: {
                            right: '2%',
                            top: '10%',
                            bottom: '10%',
                            width: '18%',
                        },
                        tooltip: {
                            trigger: 'axis', // hover触发器
                            axisPointer: {
                                // 坐标轴指示器,坐标轴触发有效
                                type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
                                shadowStyle: {
                                    color: 'rgba(150,150,150,0.1)', //hover颜色
                                },
                            },
                        },
                        visualMap: {
                            min: 0,
                            max: 12000,
                            left: 'left',
                            top: 'bottom',
                            text: ['高', '低'],
                            textStyle: {
                                color: 'white',
                            },
                            calculable: true,
                            colorLightness: [0.8, 100],
                            color: ['#c05050', '#e5cf0d', '#5ab1ef'],
                            dimension: 0,
                        },
                        geo: {
                            show: true,
                            map: 'anhui',
                            roam: true,
                            zoom: 1,
                            center: [117.28492, 31.861184],
                            label: {
                                emphasis: {
                                    show: true,
                                },
                            },
                            itemStyle: {
                                normal: {
                                    borderColor: 'rgba(147, 235, 248, 1)',
                                    borderWidth: 1,
                                    areaColor: {
                                        type: 'radial',
                                        x: 0.5,
                                        y: 0.5,
                                        r: 0.8,
                                        colorStops: [
                                            {
                                                offset: 0,
                                                color: 'rgba(3, 0, 38,9)', // 0% 处的颜色
                                            },
                                            {
                                                offset: 1,
                                                color: 'rgba(3, 0, 38,9)', // 100% 处的颜色
                                            },
                                        ],
                                        globalCoord: false, // 缺省为 false
                                    },
                                    shadowColor: 'rgba(128, 217, 248, 9)',
                                    // shadowColor: 'rgba(255, 255, 255, 1)',
                                    shadowOffsetX: -2,
                                    shadowOffsetY: 2,
                                    shadowBlur: 10,
                                },
                                emphasis: {
                                    areaColor: '#FCFFD9',
                                    borderWidth: 0,
                                },
                            },
                        },
                    },
                    options: [],
                };

                for (var n = 0; n < year.length; n++) {
                    var statistic_name = '安徽省各市GDP';
                    optionXyMap01.options.push({
                        backgroundColor: '#555555',

                        title: [
                            {
                                text: '安徽省各市GDP历年变化',
                                //subtext: '   ',
                                left: '25%',
                                top: '1%',
                                textStyle: {
                                    color: '#fff',
                                    fontSize: 25,
                                },
                            },
                            {
                                id: 'statistic',
                                text: statistic_name,
                                left: '75%',
                                top: '3%',
                                textStyle: {
                                    color: '#fff',
                                    fontSize: 16,
                                },
                            },
                        ],
                        xAxis: {
                            type: 'value',
                            scale: true,
                            position: 'top',
                            min: 0,
                            boundaryGap: false,
                            splitLine: {
                                show: false,
                            },
                            axisLine: {
                                show: false,
                            },
                            axisTick: {
                                show: false,
                            },
                            axisLabel: {
                                margin: 1,
                                textStyle: {
                                    color: '#aaa',
                                },
                            },
                        },
                        yAxis: {
                            type: 'category',
                            //  name: 'TOP 20',
                            nameGap: 16,
                            axisLine: {
                                show: true,
                                lineStyle: {
                                    color: '#ddd',
                                },
                            },
                            axisTick: {
                                show: false,
                                lineStyle: {
                                    color: '#ddd',
                                },
                            },
                            axisLabel: {
                                interval: 0,
                                textStyle: {
                                    color: '#ddd',
                                },
                            },
                            data: categoryData[n],
                        },

                        series: [
                            {
                                //文字和标志
                                name: 'light',
                                type: 'scatter',
                                coordinateSystem: 'geo',
                                data: convertData(mapData[n]),
                                symbolSize: function (val) {
                                    return val[2] / 15;
                                },
                                label: {
                                    normal: {
                                        formatter: '{b}',
                                        position: 'right',
                                        show: true,
                                    },
                                    emphasis: {
                                        show: true,
                                    },
                                },
                                itemStyle: {
                                    normal: {
                                        color: colors[colorIndex][n],
                                    },
                                },
                            },
                            //地图?
                            {
                                type: 'map',
                                map: 'anhui',
                                geoIndex: 0,
                                //aspectScale: 0.1, //长宽比
                                showLegendSymbol: false, // 存在legend时显示
                                label: {
                                    normal: {
                                        show: false,
                                    },
                                    emphasis: {
                                        show: false,
                                        textStyle: {
                                            color: '#fff',
                                        },
                                    },
                                },
                                roam: true,
                                itemStyle: {
                                    normal: {
                                        areaColor: '#031525',
                                        borderColor: '#FFFFFF',
                                    },
                                    emphasis: {
                                        areaColor: '#2B91B7',
                                    },
                                },
                                animation: false,
                                data: mapData,
                            },
                            //地图点的动画效果
                            {
                                //  name: 'Top 5',
                                type: 'effectScatter',
                                coordinateSystem: 'geo',
                                data: convertData(
                                    mapData[n]
                                        .sort(function (a, b) {
                                            return b.value - a.value;
                                        })
                                        .slice(0, 20)
                                ),
                                symbolSize: function (val) {
                                    return val[2] / 15;
                                },
                                showEffectOn: 'render',
                                rippleEffect: {
                                    brushType: 'stroke',
                                },
                                hoverAnimation: true,
                                label: {
                                    normal: {
                                        formatter: '{b}',
                                        position: 'right',
                                        show: true,
                                    },
                                },
                                itemStyle: {
                                    normal: {
                                        color: '#031525',
                                        shadowBlur: 100,
                                        shadowColor: colors[colorIndex][n],
                                    },
                                },
                                zlevel: 1,
                            },
                            //地图线的动画效果

                            //柱状图
                            {
                                zlevel: 1.5,
                                type: 'bar',
                                barMaxWidth: 8,
                                symbol: 'none',
                                itemStyle: {
                                    normal: {
                                        color: colors[n],
                                        barBorderRadius: [0, 30, 30, 0],
                                    },
                                },
                                data: barData[n],
                            },
                        ],
                    });
                    if (r === 0) {
                        r = 1;
                    } else {
                        r = 0;
                    }
                }
                myChart.setOption(optionXyMap01);
            });
        });

    </script>
</body>

</html>

运行结果:

扩展:使用事件跳转到所在市的百度链接。

直接添加:

myChart.on('click',function(params){
            var yt = alert("鼠标单击事件,您刚才单击了:" + params.name);
            window.open('https://www.baidu.com/s?wd='+encodeURIComponent(params.name));
        });
        window.addEventListener("resize",function(){
            myChart.resize();
        });


运行结果:

posted @   道阻且长,行则将至。  阅读(463)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示