Echarts地图的迁徙图
来源于 https://blog.csdn.net/qq_36275889/article/details/83383150
要:终于要开始实现迁徙图了,不过一开始我也是一脸懵。不知道如何下手。在Echarts中查看了好多的案例,终于实现了迁徙效果,但还有个需求还没实现,就是出发点是红色的光圈。目前我的字体颜色和圆圈颜色值是一样,考虑这接下来能不能弄成字体颜色和圆圈颜色不一样。好啦回到迁徙图吧
实现:
1、仔细看了下Echarts中的相关API,写个test文件。
2、在网上查阅大量资料,其中有篇文章写的很详细(参考文章来源: echarts3 迁徙图 迁入迁出)
3、在Echarts的案例上在线修改看效果,如下图所示(当时修改的案例地址,不知道现在还有用吗在线修改的案例)
4、好啦,我把详细代码上传吧
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8"> 6 <title>echarts中国地图</title> 7 <style> 8 .centerItem { 9 width: 856px; 10 height: 640px; 11 background-color: #003077; 12 margin: 110px auto 0 auto; 13 } 14 </style> 15 </head> 16 17 <body> 18 <!-- 中国地图展示 --> 19 <div id="mapBox" class="centerItem"></div> 20 21 <!-- 引入相关文件 --> 22 <script src="js/jquery-3.2.1.min.js"></script> 23 <!-- 引入 ECharts 文件 --> 24 <script src="js/echarts.js"></script> 25 <script src="js/china.js"></script> 26 27 <script> 28 // 基于准备好的dom,初始化echarts实例 29 var mapBoxEchart = echarts.init(document.getElementById('mapBox')); 30 var geoCoordMap = { //可以在地图上显示的城市的坐标信息 31 '安徽省铜陵': [117.81154, 30.945515], 32 '长春': [125.8154, 44.2584], 33 '长沙': [113.0823, 28.2568], 34 '贵阳': [106.6992, 26.7682], 35 '杨凌': [109.1162, 34.2004], 36 '深圳': [114.5435, 22.5439], 37 '济南': [117.1582, 36.8701], 38 '海口': [110.3893, 19.8516], 39 '沈阳': [123.1238, 42.1216], 40 '武汉': [114.3896, 30.6628], 41 '红安': [114.23, 31.1], 42 '昆明': [102.9199, 25.4663], 43 '杭州': [119.5313, 29.8773], 44 '成都': [103.9526, 30.7617], 45 '拉萨': [91.1865, 30.1465], 46 '天津': [117.4219, 39.4189], 47 '合肥': [117.29, 32.0581], 48 '呼和浩特': [111.4124, 40.4901], 49 '哈尔滨': [127.9688, 45.368], 50 '北京': [116.4551, 40.2539], 51 '南京': [118.8062, 31.9208], 52 '南宁': [108.479, 23.1152], 53 '南昌': [116.0046, 28.6633], 54 '乌鲁木齐': [87.9236, 43.5883], 55 '上海': [121.4648, 31.2891], 56 '三亚': [109.5000, 18.2000] 57 }; 58 var HFData = [ // 数据中name的城市名称必须与geoCoordMap中城市名称一致, 不然关联不上,合肥到各地区的线路 59 [{name: '合肥'}, {name: '长春',value: 66}], 60 [{name: '合肥'}, {name: '长沙',value: 66}], 61 [{name: '合肥'}, {name: '贵阳',value: 66}], 62 [{name: '合肥'}, {name: '杨凌',value: 66}], 63 [{name: '合肥'}, {name: '深圳',value: 66}], 64 [{name: '合肥'}, {name: '济南',value: 66}], 65 [{name: '合肥'}, { name: '海口',value: 66}], 66 [{name: '合肥'}, {name: '沈阳',value: 66}], 67 [{name: '合肥'}, {name: '武汉',value: 66}], 68 [{name: '合肥'}, {name: '昆明',value: 66}], 69 [{name: '合肥'}, {name: '合肥',value: 118}], 70 [{name: '合肥'}, {name: '杭州',value: 66}], 71 [{name: '合肥'}, {name: '成都',value: 66}], 72 [{name: '合肥'}, {name: '拉萨',value: 66}], 73 [{name: '合肥'}, {name: '天津',value: 66}], 74 [{name: '合肥'}, {name: '呼和浩特',value: 66}], 75 [{name: '合肥'}, {name: '哈尔滨',value: 66}], 76 [{name: '合肥'}, {name: '北京',value: 66}], 77 [{name: '合肥'}, {name: '南宁',value: 66}], 78 [{name: '合肥'}, {name: '南昌',value: 66}], 79 [{name: '合肥'}, {name: '乌鲁木齐',value: 66}], 80 [{name: '合肥'}, {name: '上海',value: 66}] 81 ]; 82 var planePath = 'arrow'; // 箭头的svg 83 // push进去线路开始-结束地点-经纬度 84 var convertData = function(data) { 85 var res = []; 86 for (var i = 0; i < data.length; i++) { 87 var dataItem = data[i]; 88 var fromCoord = geoCoordMap[dataItem[0].name]; 89 var toCoord = geoCoordMap[dataItem[1].name]; 90 if (fromCoord && toCoord) { 91 res.push([{ 92 coord: fromCoord 93 }, { 94 coord: toCoord 95 }]); 96 } 97 } 98 return res; 99 }; 100 var color = ['#fff', '#FFFFA8', '#46bee9']; //圆圈和字的颜色,线的颜色,箭头颜色 101 // 数据 102 var series = []; 103 // 遍历由合肥到其他城市的线路 104 [ 105 ['合肥', HFData] 106 ].forEach(function(item, i) { 107 // 配置 108 series.push({ 109 // 系列名称,用于tooltip的显示 110 name: item[0], 111 type: 'lines', 112 zlevel: 1, // 用于 Canvas 分层,不同zlevel值的图形会放置在不同的 Canvas 中 113 // effect出发到目的地 的白色尾巴线条 114 // 线特效的配置 115 effect: { 116 show: true, 117 period: 6, // 特效动画的时间,单位为 s 118 trailLength: 0.1, // 特效尾迹的长度。取从 0 到 1 的值,数值越大尾迹越长 119 color: '#46bee9', // 移动箭头颜色 120 symbol: planePath, 121 symbolSize: 6 // 特效标记的大小 122 }, 123 // lineStyle出发到目的地 的线条颜色 124 lineStyle: { 125 normal: { 126 color: color[i], 127 width: 0, 128 curveness: 0.2 //幅度 129 } 130 }, 131 data: convertData(item[1]) //开始到结束数据 132 }, { 133 //出发地信息 134 name: item[0], 135 type: 'lines', 136 zlevel: 2, 137 effect: { 138 show: true, 139 period: 6, 140 trailLength: 0, 141 symbol: planePath, 142 symbolSize: 6 143 }, 144 lineStyle: { 145 normal: { 146 color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ 147 offset: 0, 148 color: '#FFFFA8' // 出发 149 }, { 150 offset: 1, 151 color: '#58B3CC ' // 结束 颜色 152 }], false), 153 width: 1.5, 154 opacity: 0.4, 155 curveness: 0.2 156 } 157 }, 158 data: convertData(item[1]) 159 }, { 160 // 目的地信息 161 name: item[0], 162 type: 'effectScatter', 163 coordinateSystem: 'geo', 164 zlevel: 2, 165 rippleEffect: { 166 brushType: 'stroke' 167 }, 168 label: { 169 normal: { 170 show: true, 171 position: 'right', 172 formatter: '{b}' 173 } 174 }, 175 symbolSize: function(val) { 176 return val[2] / 8; 177 }, 178 itemStyle: { 179 normal: { 180 color: color[i] 181 } 182 }, 183 data: item[1].map(function(dataItem) { 184 return { 185 name: dataItem[1].name, 186 value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value]) 187 }; 188 }) 189 }); 190 }); 191 192 // 指定相关的配置项和数据 193 var mapBoxOption = { 194 geo: { 195 map: 'china', 196 roam: false, // 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启 197 aspectScale: 0.75, 198 zoom: 1.20, 199 label: { 200 normal: { 201 show: false, 202 textStyle: { 203 color: '#00a0c9' 204 } 205 }, 206 emphasis: { // 对应的鼠标悬浮效果 207 show: false, 208 textStyle: { 209 color: "#00a0c9" 210 } 211 } 212 }, 213 itemStyle: { 214 normal: { 215 areaColor: '#0083ce', 216 borderColor: '#0066ba' 217 }, 218 emphasis: { 219 borderWidth: 0, 220 borderColor: '#0066ba', 221 areaColor: "#0494e1", 222 shadowColor: 'rgba(0, 0, 0, 0.5)' 223 } 224 } 225 }, 226 series: series 227 }; 228 // 使用制定的配置项和数据显示图表 229 mapBoxEchart.setOption(mapBoxOption); 230 // echart图表自适应 231 window.addEventListener("resize", function() { 232 mapBoxEchart.resize(); 233 }); 234 </script> 235 236 </body> 237 238 </html>
用空常来坐坐
https://www.cnblogs.com/alexgl2008/

浙公网安备 33010602011771号