Cesium 结合Echarts绘制航线图
![](https://img2022.cnblogs.com/blog/1036339/202204/1036339-20220427132752625-730027552.png)
<template> <div id="cesiumContainer"></div> </template> <script> export default { data() { return {}; }, components: {}, computed: {}, created() {}, mounted() { TS.ready(() => { window.viewer = new Cesium.Viewer("cesiumContainer"); let chartLayer = new TS.EchartsLayer(); chartLayer.addTo(viewer); chartLayer.setOption(this.getOption()); }); }, methods: { getOption(e) { var chinaGeoCoordMap = { 黑龙江: [127.9688, 45.368], 内蒙古: [110.3467, 41.4899], 吉林: [125.8154, 44.2584], 北京: [116.4551, 40.2539], 辽宁: [123.1238, 42.1216], 河北: [114.4995, 38.1006], 天津: [117.4219, 39.4189], 山西: [112.3352, 37.9413], 陕西: [109.1162, 34.2004], 甘肃: [103.5901, 36.3043], 宁夏: [106.3586, 38.1775], 青海: [101.4038, 36.8207], 新疆: [87.9236, 43.5883], 西藏: [91.11, 29.97], 四川: [103.9526, 30.7617], 重庆: [108.384366, 30.439702], 山东: [117.1582, 36.8701], 河南: [113.4668, 34.6234], 江苏: [118.8062, 31.9208], 安徽: [117.29, 32.0581], 湖北: [114.3896, 30.6628], 浙江: [119.5313, 29.8773], 福建: [119.4543, 25.9222], 江西: [116.0046, 28.6633], 湖南: [113.0823, 28.2568], 贵州: [106.6992, 26.7682], 云南: [102.9199, 25.4663], 广东: [113.12244, 23.009505], 广西: [108.479, 23.1152], 海南: [110.3893, 19.8516], 上海: [121.4648, 31.2891] }; var chinaDatas = [ [ { name: "黑龙江", value: 0.88 } ], [ { name: "内蒙古", value: 0.12 } ], [ { name: "吉林", value: 0.89 } ], [ { name: "辽宁", value: 0.86 } ], [ { name: "河北", value: 0.88 } ], [ { name: "北京", value: 0.83 } ], [ { name: "天津", value: 0.71 } ], [ { name: "山西", value: 0.63 } ], [ { name: "陕西", value: 0.56 } ], [ { name: "宁夏", value: 0.17 } ], [ { name: "云南", value: 0.11 } ], [ { name: "四川", value: 1 } ], [ { name: "重庆", value: 0.8 } ], [ { name: "山东", value: 0.77 } ], [ { name: "河南", value: 0.75 } ], [ { name: "江苏", value: 0.88 } ], [ { name: "安徽", value: 0.73 } ], [ { name: "湖北", value: 0.75 } ], [ { name: "浙江", value: 0.82 } ], [ { name: "福建", value: 0.67 } ], [ { name: "江西", value: 0.71 } ], [ { name: "湖南", value: 0.75 } ], [ { name: "广东", value: 0.78 } ], [ { name: "海南", value: 0.1 } ], [ { name: "新疆", value: 0 } ], [ { name: "陕西", value: 0.91 } ] ]; var convertData = function(data) { var res = []; for (var i = 0; i < data.length; i++) { var dataItem = data[i]; var fromCoord = chinaGeoCoordMap[dataItem[0].name]; var toCoord = [121.4648, 31.2891]; if (fromCoord && toCoord) { res.push([ { coord: fromCoord, value: dataItem[0].value }, { coord: toCoord } ]); } } return res; }; var series = []; var colors = ["#f44336", "#fc9700", "#ffde00", "#ffde00", "#00eaff"]; [["上海", chinaDatas]].forEach(function(item, i) { let color = colors[2]; series.push( { type: "lines", zlevel: 2, coordinateSystem: "GLMap", effect: { show: true, period: 5, trailLength: 0.2, symbol: "arrow", symbolSize: 8 }, lineStyle: { normal: { width: 1.5, //线条宽度 opacity: 0.8, //线条透明度 curveness: 0.2, color: color } }, data: convertData(item[1]) }, { type: "effectScatter", coordinateSystem: "GLMap", zlevel: 2, rippleEffect: { period: 4, brushType: "stroke", scale: 4 }, label: { normal: { show: true, position: "right", offset: [5, 0], formatter: function(params) { return params.data.name; }, fontSize: 13 }, emphasis: { show: true } }, symbol: "circle", symbolSize: function(val) { return 5 + val[2] * 5; }, itemStyle: { normal: { show: false, color: color } }, data: item[1].map(function(dataItem) { return { name: dataItem[0].name, value: chinaGeoCoordMap[dataItem[0].name].concat([ dataItem[0].value ]) }; }) }, { type: "scatter", coordinateSystem: "GLMap", zlevel: 2, rippleEffect: { period: 4, brushType: "stroke", scale: 5 }, label: { normal: { show: true, position: "right", //offset:[5, 0], color: "#0f0", formatter: "{b}", textStyle: { color: "white" }, fontSize: 20 }, emphasis: { show: true, color: "#f60" } }, symbol: "pin", symbolSize: 40, data: [ { name: item[0], value: chinaGeoCoordMap[item[0]].concat([10]) } ] } ); }); return { animation: false, GLMap: {}, series: series }; } } }; </script> <style lang='scss' scoped> </style>