新手必看!用ECharts轻松绘制地图图表,20个实用案例教你快速上手

2026-09-03 0 阅读

ECharts 是一个使用 JavaScript 实现的开源可视化库,可以用于绘制各种图表,包括地图图表。对于新手来说,使用 ECharts 绘制地图图表可能有些挑战,但不用担心,以下将为你提供20个实用案例,帮助你快速上手。

1. 中国地图基础绘制

首先,我们需要准备一个地图数据文件,通常是一个 GeoJSON 格式的文件。以下是一个简单的例子:

var geoCoordMap = {
    '海门': [121.15, 31.89],
    '临海': [121.13, 28.37]
};

var option = {
    title: {
        text: '中国地图基础绘制',
        subtext: '数据纯属虚构'
    },
    tooltip: {
        trigger: 'item'
    },
    bmap: {
        center: [104.114129, 37.550339],
        zoom: 5,
        roam: true,
        mapStyle: {
            styleJson: [{
                "featureType": "water",
                "elementType": "all",
                "stylers": {
                    "color": "#044161"
                }
            }, {
                "featureType": "land",
                "elementType": "all",
                "stylers": {
                    "color": "#004981"
                }
            }, {
                "featureType": "boundary",
                "elementType": "all",
                "stylers": {
                    "color": "#064f85"
                }
            }, {
                "featureType": "railway",
                "elementType": "all",
                "stylers": {
                    "visibility": "off"
                }
            }, {
                "featureType": "highway",
                "elementType": "all",
                "stylers": {
                    "color": "#004981"
                }
            }, {
                "featureType": "highway",
                "elementType": "labels",
                "stylers": {
                    "visibility": "off"
                }
            }, {
                "featureType": "arterial",
                "elementType": "labels",
                "stylers": {
                    "visibility": "off"
                }
            }, {
                "featureType": "green",
                "elementType": "all",
                "stylers": {
                    "visibility": "off"
                }
            }, {
                "featureType": "subway",
                "elementType": "all",
                "stylers": {
                    "visibility": "off"
                }
            }, {
                "featureType": "manmade",
                "elementType": "all",
                "stylers": {
                    "color": "#00508b"
                }
            }, {
                "featureType": "local",
                "elementType": "all",
                "stylers": {
                    "color": "#034e63"
                }
            }, {
                "featureType": "arterial",
                "elementType": "labels",
                "stylers": {
                    "visibility": "off"
                }
            }, {
                "featureType": "boundary",
                "elementType": "all",
                "stylers": {
                    "color": "#003082"
                }
            }, {
                "featureType": "building",
                "elementType": "all",
                "stylers": {
                    "color": "#1a5787"
                }
            }, {
                "featureType": "label",
                "elementType": "all",
                "stylers": {
                    "visibility": "off"
                }
            }]
        }
    },
    series: [
        {
            name: '数据',
            type: 'map',
            mapType: 'china',
            data: [
                {name: '海门', value: Math.round(Math.random() * 1000)},
                {name: '临海', value: Math.round(Math.random() * 1000)}
            ],
            markPoint: {
                symbolSize: 50,
                data: [
                    {name: '海门', value: 90},
                    {name: '临海', value: 50}
                ]
            },
            label: {
                normal: {
                    show: true
                },
                emphasis: {
                    show: true
                }
            },
            itemStyle: {
                normal: {
                    areaColor: '#323c48',
                    borderColor: '#111'
                },
                emphasis: {
                    areaColor: '#2a333d'
                }
            }
        }
    ]
};

2. 省份地图绘制

与基础绘制类似,只需要将 mapType 属性改为省份名称即可。以下是一个河南省的例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ]
    }
]

3. 地图热力图

使用 heatmap 属性可以绘制地图热力图。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        heatmap: {
            data: [
                {name: '郑州', value: Math.round(Math.random() * 1000)},
                {name: '洛阳', value: Math.round(Math.random() * 1000)}
            ]
        }
    }
]

4. 地图标签

使用 label 属性可以为地图添加标签。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        label: {
            normal: {
                show: true,
                formatter: '{b}'
            }
        }
    }
]

5. 地图缩放

使用 roam 属性可以控制地图的缩放。以下是一个例子:

bmap: {
    roam: true
}

6. 地图样式

使用 mapStyle 属性可以自定义地图样式。以下是一个例子:

bmap: {
    mapStyle: {
        styleJson: [{
            "featureType": "water",
            "elementType": "all",
            "stylers": {
                "color": "#044161"
            }
        }]
    }
}

7. 地图标记

使用 markPoint 属性可以为地图添加标记。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPoint: {
            symbolSize: 50,
            data: [
                {name: '郑州', value: 90},
                {name: '洛阳', value: 50}
            ]
        }
    }
]

8. 地图多边形

使用 markPolygon 属性可以为地图添加多边形。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPolygon: {
            data: [
                [
                    [113.649, 34.756],
                    [113.649, 34.756],
                    [113.649, 34.756]
                ]
            ]
        }
    }
]

9. 地图文本

使用 markText 属性可以为地图添加文本。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markText: {
            data: [
                {name: '郑州', value: '郑州'},
                {name: '洛阳', value: '洛阳'}
            ]
        }
    }
]

10. 地图连接线

使用 markLine 属性可以为地图添加连接线。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markLine: {
            data: [
                [
                    {name: '郑州', value: 90},
                    {name: '洛阳', value: 50}
                ]
            ]
        }
    }
]

11. 地图自定义点

使用 markPoint 属性可以为地图添加自定义点。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPoint: {
            symbolSize: 50,
            data: [
                {name: '郑州', value: 90},
                {name: '洛阳', value: 50}
            ]
        }
    }
]

12. 地图自定义多边形

使用 markPolygon 属性可以为地图添加自定义多边形。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPolygon: {
            data: [
                [
                    [113.649, 34.756],
                    [113.649, 34.756],
                    [113.649, 34.756]
                ]
            ]
        }
    }
]

13. 地图自定义文本

使用 markText 属性可以为地图添加自定义文本。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markText: {
            data: [
                {name: '郑州', value: '郑州'},
                {name: '洛阳', value: '洛阳'}
            ]
        }
    }
]

14. 地图自定义连接线

使用 markLine 属性可以为地图添加自定义连接线。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markLine: {
            data: [
                [
                    {name: '郑州', value: 90},
                    {name: '洛阳', value: 50}
                ]
            ]
        }
    }
]

15. 地图自定义点

使用 markPoint 属性可以为地图添加自定义点。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPoint: {
            symbolSize: 50,
            data: [
                {name: '郑州', value: 90},
                {name: '洛阳', value: 50}
            ]
        }
    }
]

16. 地图自定义多边形

使用 markPolygon 属性可以为地图添加自定义多边形。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPolygon: {
            data: [
                [
                    [113.649, 34.756],
                    [113.649, 34.756],
                    [113.649, 34.756]
                ]
            ]
        }
    }
]

17. 地图自定义文本

使用 markText 属性可以为地图添加自定义文本。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markText: {
            data: [
                {name: '郑州', value: '郑州'},
                {name: '洛阳', value: '洛阳'}
            ]
        }
    }
]

18. 地图自定义连接线

使用 markLine 属性可以为地图添加自定义连接线。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markLine: {
            data: [
                [
                    {name: '郑州', value: 90},
                    {name: '洛阳', value: 50}
                ]
            ]
        }
    }
]

19. 地图自定义点

使用 markPoint 属性可以为地图添加自定义点。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPoint: {
            symbolSize: 50,
            data: [
                {name: '郑州', value: 90},
                {name: '洛阳', value: 50}
            ]
        }
    }
]

20. 地图自定义多边形

使用 markPolygon 属性可以为地图添加自定义多边形。以下是一个例子:

series: [
    {
        name: '数据',
        type: 'map',
        mapType: '河南',
        data: [
            {name: '郑州', value: Math.round(Math.random() * 1000)},
            {name: '洛阳', value: Math.round(Math.random() * 1000)}
        ],
        markPolygon: {
            data: [
                [
                    [113.649, 34.756],
                    [113.649, 34.756],
                    [113.649, 34.756]
                ]
            ]
        }
    }
]

以上是20个ECharts地图图表的实用案例,希望对你有所帮助。在实际应用中,可以根据自己的需求进行修改和扩展。祝你学习愉快!

分享到: