echarts实现航运图,航运图

 

需求:地图上有一些地点或者港口,如果港口间有航线,则点击具体的点会显示出具体的航线。实现图如下:

点击具体的点后呈现:

具体的echarts代码如下:

var data = [
    {name: \'上海\', value: 50},
    {name: \'厦门\', value: 50},
    {name: \'深圳\', value: 60},
    {name: \'三亚\', value: 54},
    {name: \'长崎\', value: 60},
    {name: \'新加坡\', value: 60},
    {name: \'马尼拉\', value: 60},
    {name: \'雅加达\', value: 60},
];
var geoCoordMap = {
    \'上海\':[121.48,31.22],
    \'厦门\':[118.1,24.46],
    \'深圳\':[114.07,22.62],
    \'珠海\':[113.52,22.3],
    \'三亚\':[109.511909,18.252847],
    \'长崎\':[130,30],
    \'新加坡\':[103.51,1.18],
    \'马尼拉\':[120.984219,14.599512],
    \'雅加达\':[106.845172,-6.211544],
};

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 = {
    title: {
        text: \'航运路线图\',
        left: \'center\'
    },
    tooltip : {
        trigger: \'item\'
    },
    bmap: {
        center: [104.114129, 37.550339],
        zoom: 5,
        roam: true,
        mapStyle: {
            styleJson: [{
                \'featureType\': \'water\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'color\': \'#d1d1d1\'
                }
            }, {
                \'featureType\': \'land\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'color\': \'#f3f3f3\'
                }
            }, {
                \'featureType\': \'railway\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'visibility\': \'off\'
                }
            }, {
                \'featureType\': \'highway\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'color\': \'#fdfdfd\'
                }
            }, {
                \'featureType\': \'highway\',
                \'elementType\': \'labels\',
                \'stylers\': {
                    \'visibility\': \'off\'
                }
            }, {
                \'featureType\': \'arterial\',
                \'elementType\': \'geometry\',
                \'stylers\': {
                    \'color\': \'#fefefe\'
                }
            }, {
                \'featureType\': \'arterial\',
                \'elementType\': \'geometry.fill\',
                \'stylers\': {
                    \'color\': \'#fefefe\'
                }
            }, {
                \'featureType\': \'poi\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'visibility\': \'off\'
                }
            }, {
                \'featureType\': \'green\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'visibility\': \'off\'
                }
            }, {
                \'featureType\': \'subway\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'visibility\': \'off\'
                }
            }, {
                \'featureType\': \'manmade\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'color\': \'#d1d1d1\'
                }
            }, {
                \'featureType\': \'local\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'color\': \'#d1d1d1\'
                }
            }, {
                \'featureType\': \'arterial\',
                \'elementType\': \'labels\',
                \'stylers\': {
                    \'visibility\': \'off\'
                }
            }, {
                \'featureType\': \'boundary\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'color\': \'#fefefe\'
                }
            }, {
                \'featureType\': \'building\',
                \'elementType\': \'all\',
                \'stylers\': {
                    \'color\': \'#d1d1d1\'
                }
            }, {
                \'featureType\': \'label\',
                \'elementType\': \'labels.text.fill\',
                \'stylers\': {
                    \'color\': \'#999999\'
                }
            }]
        }
    },
    series : [
        {
                name: \'航运起点\',
                type: \'graph\',
                coordinateSystem: \'bmap\',
                layout: \'none\',
                data: convertData(data),
                links: [{
                    source: \'深圳\',
                    target: \'长崎\'
                }, {
                    source: \'深圳\',
                    target: \'新加坡\'
                },{
                    source: \'深圳\',
                    target: \'马尼拉\'
                }, {
                    source: \'深圳\',
                    target: \'雅加达\'
                },{
                    source: \'三亚\',
                    target: \'雅加达\'
                },
                {
                    source: \'上海\',
                    target: \'长崎\'
                },
                {
                    source: \'上海\',
                    target: \'马尼拉\'
                },{
                    source: \'上海\',
                    target: \'新加坡\'
                },{
                    source: \'上海\',
                    target: \'深圳\'
                },{
                    source: \'上海\',
                    target: \'三亚\'
                },{
                    source: \'厦门\',
                    target: \'马尼拉\',
                },{
                    source: \'马尼拉\',
                    target: \'厦门\'
                }
                ],
                roam: true,
                focusNodeAdjacency: true,
                itemStyle: {
                    normal: {
                        borderColor: \'#fff\',
                        borderWidth: 1,
                        shadowBlur: 10,
                        shadowColor: \'rgba(0, 0, 0, 0.3)\'
                    }
                },
                hoverAnimation: true,
                label: {
                    normal: {
                        formatter: \'{b}\',
                        position: \'right\',
                        show: true
                    }
                },
                lineStyle: {
                    color: \'source\',
                    curveness: 0.3
                },
                emphasis: {
                    lineStyle: {
                        width: 2
                    }
                }
            }
    ]
};

 

直接复制代码替换https://www.echartsjs.com/examples/zh/editor.html?c=effectScatter-bmap的代码内容就可显示出效果了。剩下的就是整合到项目里了。

整合到项目的步骤就不写了  这个比较简单,好了  快拿走吧   好用记得点赞哈!!!

 

 

 

 

 

 

 

 

 

相关文章: