美文网首页
echarts航线图图表demo

echarts航线图图表demo

作者: Frank_Fang | 来源:发表于2021-05-11 12:52 被阅读0次

    echarts航线图图表demo

    <!DOCTYPE html>
    <html>
        <head>
            <title>demo | vue-amap</title>
            <meta charset="UTF-8">
        </head>
        <style scoped="">
            html,
            body {
                margin: 0;
                padding: 0;
            }
    
            #echartsMap {
                width: 1920px;
                height: 1080px;
    
            }
    
            .map-wrapper {
                background-color: #101724;
                display: flex;
                width: 100%;
                height: 100vh;
                align-items: center;
                justify-content: center;
            }
        </style>
        <body>
            <div class="map-wrapper">
                <div id="echartsMap"></div>
            </div>
        </body>
        <!-- 引入组件库 -->
        <script src="echarts.js"></script>
        <script src="world.js"></script>
        <script>
            let chart = echarts.init(document.getElementById('echartsMap'));
            /*
                图中相关城市经纬度,根据你的需求添加数据
                关于国家的经纬度,可以用首都的经纬度或者其他城市的经纬度
            */
            var geoCoordMap = {
                //东盟十国
                '广州': [113.5107, 23.2196],
                '马来西亚': [101.975766, 4.210484],
                '印度尼西亚': [113.921327, -0.789275],
                '泰国': [100.992541, 15.870032],
                '菲律宾': [121.774017, 12.879721],
                '文莱': [114.727669, 4.535277],
                '越南': [108.277199, 14.058324],
                '老挝': [102.495496, 19.85627],
                '缅甸': [95.956223, 21.913965],
                '柬埔寨': [104.990963, 12.565679],
                '新加坡': [103.51, 1.17],
                //一带一路
                '广州': [113.5107, 23.2196],
                '中国': [116.40, 39.90],
                '蒙古': [103.846656, 46.862496],
                '俄罗斯': [105.318756, 61.52401],
                '东帝汶': [125.727539, -8.874217],
                '印度': [78.96288, 20.593684],
                '巴基斯坦': [69.34511599999999, 30.375321],
                '孟加拉国': [90.356331, 23.684994],
                '斯里兰卡': [80.77179699999999, 7.873053999999999],
                '阿富汗': [67.709953, 33.93911],
                '尼泊尔': [84.12400799999999, 28.394857],
                '马尔代夫': [73.5, 4.2],
                '不丹': [90.433601, 27.514162],
                '沙特阿拉伯': [45.079162, 23.885942],
                '阿联酋': [53.847818, 23.424076],
                '阿曼': [55.923255, 21.512583],
                '伊朗': [53.688046, 32.427908],
                '土耳其': [35.243322, 38.963745],
                '以色列': [34.851612, 31.046051],
                '埃及': [30.802498, 26.820553],
                '科威特': [47.481766, 29.31166],
                '伊拉克': [43.679291, 33.223191],
                '卡塔尔': [51.183884, 25.354826],
                '约旦': [36.238414, 30.585164],
                '黎巴嫩': [35.862285, 33.854721],
                '巴林': [50.36, 26.12],
                '也门': [48.516388, 15.552727],
                '叙利亚': [38.996815, 34.80207499999999],
                '巴勒斯坦': [34.28, 31.30],
                '波兰': [19.145136, 51.919438],
                '罗马尼亚': [24.96676, 45.943161],
                '捷克共和国': [15.472962, 49.81749199999999],
                '斯洛伐克': [19.699024, 48.669026],
                '保加利亚': [25.48583, 42.733883],
                '匈牙利': [19.503304, 47.162494],
                '拉脱维亚': [24.603189, 56.879635],
                '立陶宛': [23.881275, 55.169438],
                '斯洛文尼亚': [14.995463, 46.151241],
                '爱沙尼亚': [25.013607, 58.595272],
                '克罗地亚': [15.2, 45.1],
                '阿尔巴尼亚': [20.168331, 41.153332],
                '塞尔维亚': [21.005859, 44.016521],
                '马其顿': [21.745275, 41.608635],
                '波黑': [43.52, 18.26],
                '黑山': [19.37439, 42.708678],
                '哈萨克斯坦': [66.923684, 48.019573],
                '乌兹别克斯坦': [64.585262, 41.377491],
                '土库曼斯坦': [59.556278, 38.969719],
                '吉尔吉斯斯坦': [74.766098, 41.20438],
                '塔吉克斯坦': [71.276093, 38.861034],
                '乌克兰': [31.16558, 48.379433],
                '白俄罗斯': [27.953389, 53.709807],
                '格鲁吉亚': [43.356892, 42.315407],
                '阿塞拜疆': [47.576927, 40.143105],
                '亚美尼亚': [45.038189, 40.069099],
                '摩尔多瓦': [28.369885, 47.411631],
                //欧美国家
                '挪威': [8.468945999999999, 60.47202399999999],
                '丹麦': [9.501785, 56.26392],
                '瑞典': [18.643501, 60.12816100000001],
                '芬兰': [25.748151, 61.92410999999999],
                '英国': [-3.435973, 55.378051],
                '荷兰': [5.291265999999999, 52.132633],
                '爱尔兰': [-8.24389, 53.41291],
                '比利时': [4.469936, 50.503887],
                '卢森堡': [6.129582999999999, 49.815273],
                '法国': [2.213749, 46.227638],
                '西班牙': [-3.74922, 40.46366700000001],
                '葡萄牙': [-8.224454, 39.39987199999999],
                '德国': [10.451526, 51.165691],
                '奥地利': [14.550072, 47.516231],
                '瑞士': [8.227511999999999, 46.818188],
                '美国': [-95.712891, 37.09024],
                '加拿大': [-102.646409, 59.994255],
                '澳大利亚': [133.775136, -25.274398],
                '新西兰': [174.885971, -40.900557]
            };
    
            // 东盟10国
            var DMData = [
                [{
                    name: '中国'
                }, {
                    name: "马来西亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "印度尼西亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "泰国",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "菲律宾",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "文莱",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "越南",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "老挝",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "缅甸",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "柬埔寨",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "新加坡",
                    value: 30
                }]
            ];
            //一带一路
            var D1LData = [
                [{
                    name: '中国'
                }, {
                    name: "蒙古",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "俄罗斯",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "东帝汶",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "印度",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "巴基斯坦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "孟加拉国",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "斯里兰卡",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "阿富汗",
                    value: 30
                }],
                [{
                    name: '广州'
                }, {
                    name: "尼泊尔",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "马尔代夫",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "不丹",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "沙特阿拉伯",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "阿联酋",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "阿曼",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "伊朗",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "土耳其",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "以色列",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "埃及",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "科威特",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "伊拉克",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "卡塔尔",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "约旦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "黎巴嫩",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "巴林",
                    value: 30
                }],
                [{
                    name: '广州'
                }, {
                    name: "也门",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "叙利亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "巴勒斯坦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "波兰",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "罗马尼亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "捷克共和国",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "斯洛伐克",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "保加利亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "匈牙利",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "拉脱维亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "立陶宛",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "斯洛文尼亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "爱沙尼亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "克罗地亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "阿尔巴尼亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "塞尔维亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "马其顿",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "波黑",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "黑山",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "哈萨克斯坦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "乌兹别克斯坦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "土库曼斯坦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "吉尔吉斯斯坦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "塔吉克斯坦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "乌克兰",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "白俄罗斯",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "格鲁吉亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "阿塞拜疆",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "亚美尼亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "摩尔多瓦",
                    value: 30
                }]
            ];
            var OMData = [ //欧美国家
                [{
                    name: '中国'
                }, {
                    name: "挪威",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "丹麦",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "瑞典",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "芬兰",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "英国",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "荷兰",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "爱尔兰",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "比利时",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "卢森堡",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "法国",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "西班牙",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "葡萄牙",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "德国",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "奥地利",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "瑞士",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "美国",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "加拿大",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "澳大利亚",
                    value: 30
                }],
                [{
                    name: '中国'
                }, {
                    name: "新西兰",
                    value: 30
                }]
            ];
    
            // 小飞机的图标,可以用其他图形替换
            var planePath =
                'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z';
    
            // 获取地图中起点和终点的坐标,以数组形式保存下来
            var convertData = function(data) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                    var dataItem = data[i];
                    var fromCoord = geoCoordMap[dataItem[0].name];
                    var toCoord = geoCoordMap[dataItem[1].name];
                    if (fromCoord && toCoord) {
                        res.push([{
                            coord: fromCoord // 起点坐标
                        }, {
                            coord: toCoord // 终点坐标
                        }])
                    }
                }
                return res;
            }
    
            var color = ['#9ae5fc', '#dcbf71']; // 自定义图中要用到的颜色
            var series = []; // 用来存储地图数据
    
            [
                //['中国', DMData],
                //['中国', D1LData]
                ['中国', OMData]
            ].forEach(function(item, i) {
                series.push({
                    // 白色航线特效图
                    type: 'lines',
                    zlevel: 1, // 用于分层,z-index的效果
                    effect: {
                        show: true, // 动效是否显示
                        period: 6, // 特效动画时间
                        trailLength: 0.7, // 特效尾迹的长度
                        color: '#fff', // 特效颜色
                        symbolSize: 3 // 特效大小
                    },
                    lineStyle: {
                        normal: { // 正常情况下的线条样式
                            color: color[0],
                            width: 0, // 因为是叠加效果,要是有宽度,线条会变粗,白色航线特效不明显
                            curveness: -0.2 // 线条曲度
                        }
                    },
                    data: convertData(item[1]) // 特效的起始、终点位置
                }, { // 小飞机航线效果
                    type: 'lines',
                    zlevel: 2,
                    //symbol: ['none', 'arrow'],   // 用于设置箭头
                    symbolSize: 10,
                    effect: {
                        show: true,
                        period: 6,
                        trailLength: 0,
                        // symbol: planePath, // 特效形状,可以用其他svg pathdata路径代替
                        symbolSize: 5
                    },
                    lineStyle: {
                        normal: {
                            color: color[0],
                            width: 1,
                            opacity: 0.6,
                            curveness: -0.2
                        }
                    },
                    data: convertData(item[1]) // 特效的起始、终点位置,一个二维数组,相当于coords: convertData(item[1])
                }, { // 散点效果
                    type: 'effectScatter',
                    coordinateSystem: 'geo', // 表示使用的坐标系为地理坐标系
                    zlevel: 3,
                    rippleEffect: {
                        brushType: 'stroke' // 波纹绘制效果
                    },
                    label: {
                        normal: { // 默认的文本标签显示样式
                            show: true,
                            position: 'left', // 标签显示的位置
                            formatter: '{b}' // 标签内容格式器
                        }
                    },
                    itemStyle: {
                        normal: {
                            color: color[0]
                        }
                    },
                    data: item[1].map(function(dataItem) {
                        return {
                            name: dataItem[1].name,
                            value: geoCoordMap[dataItem[1].name], // 起点的位置
                            symbolSize: dataItem[1].value / 4, // 散点的大小,通过之前设置的权重来计算,val的值来自data返回的value
                        };
                    })
                });
            });
    
            // 显示终点位置,类似于上面最后一个效果,放在外面写,是为了防止被循环执行多次
            series.push({
                type: 'effectScatter',
                coordinateSystem: 'geo',
                zlevel: 3,
                rippleEffect: {
                    brushType: 'stroke'
                },
                label: {
                    normal: {
                        show: true,
                        position: 'left',
                        formatter: '{b}'
                    }
                },
                symbolSize: function(val) {
                    return val[2] / 8;
                },
                itemStyle: {
                    normal: {
                        color: color[1]
                    }
                },
                data: [{
                    name: '中国',
                    value: [116.46, 39.92, 30],
                    label: {
                        normal: {
                            position: 'right'
                        }
                    }
                }]
            });
    
            // 最后初始化世界地图中的相关数据
            chart.setOption({
                backgroundColor: '#101724',
                title: {
                    //text: '中国国际贸易促进委员会',
                    //subtext: '国别资讯',
                    textStyle: {
                        color: '#fff',
                        fontSize: 20
                    },
                    top: '10px',
                    left: '10px'
                },
                geo: {
                    map: 'world', // 与引用进来的地图js名字一致
                    roam: false, // 禁止缩放平移
                    itemStyle: { // 每个区域的样式
                        normal: {
                            areaColor: '#7d7d7d'
                        },
                        emphasis: {
                            areaColor: '#2a333d'
                        }
                    },
                    regions: [{ // 选中的区域
                        name: 'China',
                        selected: false,
                        itemStyle: { // 高亮时候的样式
                            emphasis: {
                                areaColor: '#7d7d7d'
                            }
                        },
                        label: { // 高亮的时候不显示标签
                            emphasis: {
                                show: false
                            }
                        }
                    }]
                },
                series: series, // 将之前处理的数据放到这里
                textStyle: {
                    fontSize: 12
                }
            });
        </script>
    </html>

    相关文章

      网友评论

          本文标题:echarts航线图图表demo

          本文链接:https://www.haomeiwen.com/subject/iebgdltx.html