• echarts快速实现迁徙地图


    准备资源

    资源路径

    在这里插入图片描述

    第一种方式 引入资源

    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/echart/echarts.min.js"></script>
    
    • 1
    • 2

    第二种方式引入资源

    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/echart/esl.js"></script>
    <script type="text/javascript" src="js/echart/echarts.min.js"></script>
    
    • 1
    • 2
    • 3

    地图资源

    geoJson生成
    在这里插入图片描述

    代码部分

    第一种资源实现方式

    function getEcharts2(data){
    
        var geoCoordMap = {
            '绥化': [126.968887,46.653845],
            '哈尔滨': [126.534967,45.803775],
            '佳木斯': [130.306119,46.799608],
            '鹤岗': [130.284147,47.34582],
            '双鸭山': [131.135587,46.675373],
            '伊春': [128.844938,47.735185],
            '大庆': [125.104093,46.59994],
            '齐齐哈尔': [123.912076,47.360706],
            '长春': [125.285367,43.841975],
            '牡丹江': [129.613981,44.558693],
            '大连': [121.593961,38.907619],
            '海拉尔区': [119.736279,49.212189]
        };
    
        var GZData = [
            [{ name: '哈尔滨' }, { name: '绥化', value: 95 }],
            [{ name: '哈尔滨' }, { name: '佳木斯', value: 90 }],
            [{ name: '哈尔滨' }, { name: '鹤岗', value: 80 }],
            [{ name: '哈尔滨' }, { name: '伊春', value: 70 }],
            [{ name: '哈尔滨' }, { name: '双鸭山', value: 60 }],
            [{ name: '哈尔滨' }, { name: '大庆', value: 50 }],
            [{ name: '哈尔滨' }, { name: '齐齐哈尔', value: 40 }],
            [{ name: '哈尔滨' }, { name: '长春', value: 20 }],
            [{ name: '哈尔滨' }, { name: '牡丹江', value: 10 }],
            [{ name: '哈尔滨' }, { name: '大连', value: 25 }],
            [{ name: '哈尔滨' }, { name: '海拉尔区', value: 25 }]
        ];
    
        var seriesMap = [['哈尔滨', GZData]];
    
        //初始化数据
        // var geoCoordMap = data.result.geoCoordMap;
        //
        // var seriesMap = data.result.seriesMap;
        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) {
                 //cnt定义数量,这里面随意增加自定义属性
                    res.push({
                        fromName: dataItem[0].name,
                        toName: dataItem[1].name,
                        cnt:dataItem[1].value,
                        coords: [fromCoord, toCoord]
                    })
                }
            }
            return res;
        };
        //初始化series
        var color = ['#a6c84c', '#ffa022', '#46bee9'];
        var series = [];
    
            seriesMap.forEach(function (item, i) {
                series.push({
                    name: item[0],
                    type: 'lines',
                    zlevel: 1,
                    effect: {
                        show: true,
                        period: 6,
                        trailLength: 0,
                        symbol: 'triangle',// 箭头方式:'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
                        symbolSize: 20,
                        // loop: false
                    },
                    tooltip : {
                        formatter:function (params, ticket, callback) {
                          //鼠标悬浮提示信息获取自定义的结果
                            var htm = `<div><span>出发地:${params.data.fromName}</span>
                                    <br><span>目的地:${params.data.toName}</span>
                                    <br><span>订单量:${params.data.cnt}</span>
                                    </div>`;
                            return htm;
                        }
                    },
                    lineStyle: {
                        normal: {
                            color: color[i],
                            width: 1,
                            opacity: 0.4,
                            curveness: 0.2
                        }
                    },
                    data: convertData(item[1])
                },
                {
                    name: item[0] ,
                    type: 'effectScatter',
                    coordinateSystem: 'geo',
                    zlevel: 2,
                    rippleEffect: {
                        brushType: 'stroke'
                    },
                    tooltip : {
                        formatter:function (params, ticket, callback) {
                            return params.data.name;
                        }
                    },
                    label: {
                        normal: {
                            show: true,
                            position: 'right',
                            formatter: '{b}'
                        }
                    },
                    symbolSize: function (val) {
                        return 16;
                    },
                    itemStyle: {
                        normal: {
                            color: color[i]
                        }
                    },
                    data: item[1].map(function (dataItem) {
                        return {
                            name: dataItem[1].name,
                            value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
                        };
                    })
                });
            });
    
            var option  = {
                backgroundColor: '#404a59',
                title: {
                    text: '旅游巴士迁徙图',
                    left: 'center',
                    textStyle: {
                        color: '#fff'
                    }
                },
                tooltip : {
                    trigger: 'item'
                },
                legend: {
                    orient: 'vertical',
                    top: 'bottom',
                    left: 'right',
                    data:[''],
                    textStyle: {
                        color: '#fff'
                    },
                    selectedMode: 'single'
                },
                geo: {
                    map: 'china',
                    // center: [108.114129, 28.550339],
                    center: [126.522926,45.75821],
                    label: {
                        normal: {
                            show: true,
                            formatter: '{a}',
                            // position: 'inside',
                            backgroundColor: '#fff',
                            padding: [3, 5],
                            borderRadius: 3,
                            borderWidth: 1,
                            borderColor: 'rgba(0,0,0,0.5)',
                            color: '#777'
                        },
                        emphasis: {
                        }
                    },
                    selectedMode: 'single',
                    roam: true,
                    itemStyle: {
                        normal: {
                            areaColor: '#323c48',
                            borderColor: '#404a59'
                        },
                        emphasis: {
                            areaColor: '#2a333d'
                        }
                    }
                },
                series: series
            }
    
        $.get('js/echart/map/china.json', function (chinaJson) {
            echarts.registerMap('china', chinaJson);
            var chart = echarts.init(document.getElementById('mainMap'));
            chart.setOption(option);
        });
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192

    第二种资源实现方式

    function getEcharts3(data){
        // 为模块加载器配置echarts的路径,从当前页面链接到echarts.js,定义所需图表路径
        require.config({
            paths: {
                echarts: '/echart'
            }
        });
        require([
            'echarts/echarts'
        ], function (echarts) {
    
            // var geoCoordMap = {
            //     '绥化': [126.968887,46.653845],
            //     '哈尔滨': [126.534967,45.803775],
            //     '佳木斯': [130.306119,46.799608],
            //     '鹤岗': [130.284147,47.34582],
            //     '双鸭山': [131.135587,46.675373],
            //     '伊春': [128.844938,47.735185],
            //     '大庆': [125.104093,46.59994],
            //     '齐齐哈尔': [123.912076,47.360706],
            //     '长春': [125.285367,43.841975],
            //     '牡丹江': [129.613981,44.558693],
            //     '大连': [121.593961,38.907619],
            //     '海拉尔区': [119.736279,49.212189]
            // };
    
            // var GZData = [
            //     [{ name: '哈尔滨' }, { name: '绥化', value: 95 }],
            //     [{ name: '哈尔滨' }, { name: '佳木斯', value: 90 }],
            //     [{ name: '哈尔滨' }, { name: '鹤岗', value: 80 }],
            //     [{ name: '哈尔滨' }, { name: '伊春', value: 70 }],
            //     [{ name: '哈尔滨' }, { name: '双鸭山', value: 60 }],
            //     [{ name: '哈尔滨' }, { name: '大庆', value: 50 }],
            //     [{ name: '哈尔滨' }, { name: '齐齐哈尔', value: 40 }],
            //     [{ name: '哈尔滨' }, { name: '长春', value: 20 }],
            //     [{ name: '哈尔滨' }, { name: '牡丹江', value: 10 }],
            //     [{ name: '哈尔滨' }, { name: '大连', value: 25 }],
            //     [{ name: '哈尔滨' }, { name: '海拉尔区', value: 25 }]
            // ];
    
            // var seriesMap = [['哈尔滨', GZData]];
    
            var geoCoordMap = data.result.geoCoordMap;
            var seriesMap = data.result.seriesMap;
            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) {
                 		//cnt定义数量,这里面随意增加自定义属性
                        res.push({
                            fromName: dataItem[0].name,
                            toName: dataItem[1].name,
                            cnt:dataItem[1].value,
                            coords: [fromCoord, toCoord]
                        })
                    }
                }
                return res;
            };
    
            $.get('js/echart/map/china.json', function (chinaJson) {
            // $.get('https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json', function (chinaJson) {
                echarts.registerMap('china', chinaJson);
                var myChart = echarts.init(document.getElementById('mainMap'));
                var color = ['#a6c84c', '#ffa022', '#46bee9'];
                var series = [];
                seriesMap.forEach(function (item, i) {
                    series.push(
                        {
                            name: item[0],
                            type: 'lines',
                            zlevel: 1,
                            effect: {
                                show: true,
                                period: 6,
                                trailLength: 0,
                                symbol: 'triangle',// 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
                                symbolSize: 20,
                                // loop: false
                            },
                            tooltip : {
                                formatter:function (params, ticket, callback) {
                                //鼠标悬浮提示信息获取自定义的结果
                                    var htm = `<div><span>出发地:${params.data.fromName}</span>
                                    <br><span>目的地:${params.data.toName}</span>
                                    <br><span>订单量:${params.data.cnt}</span>
                                    </div>`;
                                    return htm;
                                    
                                }
                            },
                            lineStyle: {
                                normal: {
                                    color: color[i],
                                    width: 1,
                                    opacity: 0.4,
                                    curveness: 0.2
                                }
                            },
                            data: convertData(item[1])
                        },
                        {
                            name: item[0] ,
                            type: 'effectScatter',
                            coordinateSystem: 'geo',
                            zlevel: 2,
                            rippleEffect: {
                                brushType: 'stroke'
                            },
                            tooltip : {
                                formatter:function (params, ticket, callback) {
                                    return params.data.name;
                                }
                            },
                            label: {
                                normal: {
                                    show: true,
                                    position: 'right',
                                    formatter: '{b}'
                                }
                            },
                            symbolSize: function (val) {
                                return 16;
                            },
                            itemStyle: {
                                normal: {
                                    color: color[i]
                                }
                            },
                            data: item[1].map(function (dataItem) {
                                return {
                                    name: dataItem[1].name,
                                    value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
                                };
                            })
                        });
                });
                myChart.setOption({
                    backgroundColor: '#404a59',
                    title: {
                        text: '旅游巴士迁徙图',
                        left: 'center',
                        textStyle: {
                            color: '#fff'
                        }
                    },
                    tooltip : {
                        trigger: 'item'
                    },
                    legend: {
                        orient: 'vertical',
                        top: 'bottom',
                        left: 'right',
                        data:[''],
                        textStyle: {
                            color: '#fff'
                        },
                        selectedMode: 'single'
                    },
                    geo: {
                        map: 'china',
                        // center: [108.114129, 28.550339],
                        center: [126.522926,45.75821],
                        label: {
                            normal: {
                                show: true,
                                formatter: '{a}',
                                // position: 'inside',
                                backgroundColor: '#fff',
                                padding: [3, 5],
                                borderRadius: 3,
                                borderWidth: 1,
                                borderColor: 'rgba(0,0,0,0.5)',
                                color: '#777'
                            },
                            emphasis: {
                            }
                        },
                        selectedMode: 'single',
                        roam: true,
                        itemStyle: {
                            normal: {
                                areaColor: '#323c48',
                                borderColor: '#404a59'
                            },
                            emphasis: {
                                areaColor: '#2a333d'
                            }
                        }
                    },
                    series: series
                });
    
            });
        });
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199

    效果展示

    在这里插入图片描述

  • 相关阅读:
    一起Talk Android吧(第三百七十一回:多线程之线程池扩展)
    基于springboot和vue2外卖点餐系统的项目总结
    Vue2.js给对象动态添加响应式属性
    列表和元组
    【Android安全】Android 应用组件 | Android 四大组件
    程序员这个职业会在10年内被AI淘汰吗?
    Spring Boot中的SSE与缓存集成:使用Redis加速事件推送
    C#实现在企业微信内创建微信群发送群消息
    08-类加载的时机
    痛心:实验室服务器被黑挖矿怎么办?
  • 原文地址:https://blog.csdn.net/weixin_43450799/article/details/125520548