一、Apache Echarts
官网地址:https://echarts.apache.org/
npm install echarts --save
二、获取地图的GeoJSON
地址:DataV.GeoAtlas地理小工具系列
左侧是地图,右侧是JSON数据路径,点击你想要生成的地图省市、地级(以中华人名共和国为例为例)
注意:地图点击可以下钻,再点进去是二级,直到你想要的省市地区(点击旁边的空白可以返回上一级);右侧JSON数据的链接地址,可以选择下载下来(放在json文件夹中),也可以使用在线地址!(json API与geoJSON数据地址均可用)
三、项目中引用
import * as echarts from 'echarts';
四、准备放地图的容器
<div style="width:800px;height:600px" id="main"></div>
五、配置地图option信息
let mapOption = {tooltip: {trigger: 'item',formatter: () => {let showHtml = ''showHtml += `<span style="display: flex; font-size: 12px;">${'装机量'}:${params.name}</br></span>`return showHtml},},legend: {orient: 'vertical',left: 'left',data: [],},series: [{name: '安装信息',type: 'map',mapType: 'china',roam: false,label: {normal: {show: true,},emphasis: {show: true,},},emphasis: {scale: true,itemStyle: {areaColor: '#fff',},},symbolSize: function (val) {return val[2] / 15},showEffectOn: 'render',itemStyle: {areaColor: '#2043AA',borderColor: '#111',color: '#fff',},zlevel: 1,data: [{name: '北京',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{name: '天津',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{name: '上海',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{name: '重庆',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{ name: '河北', value: Math.round(Math.random() * 100) },{ name: '河南', value: Math.round(Math.random() * 100) },{ name: '云南', value: Math.round(Math.random() * 100) },{ name: '辽宁', value: Math.round(Math.random() * 100) },{ name: '黑龙江', value: Math.round(Math.random() * 100) },{ name: '湖南', value: Math.round(Math.random() * 100) },{ name: '安徽', value: Math.round(Math.random() * 100) },{ name: '山东', value: Math.round(Math.random() * 100) },{ name: '新疆', value: Math.round(Math.random() * 100) },{ name: '江苏', value: Math.round(Math.random() * 100) },{ name: '浙江', value: Math.round(Math.random() * 100) },{ name: '江西', value: Math.round(Math.random() * 100) },{ name: '湖北', value: Math.round(Math.random() * 100) },{ name: '广西', value: Math.round(Math.random() * 100) },{ name: '甘肃', value: Math.round(Math.random() * 100) },{ name: '山西', value: Math.round(Math.random() * 100) },{ name: '内蒙古', value: Math.round(Math.random() * 100) },{ name: '陕西', value: Math.round(Math.random() * 100) },{ name: '吉林', value: Math.round(Math.random() * 100) },{ name: '福建', value: Math.round(Math.random() * 100) },{ name: '贵州', value: Math.round(Math.random() * 100) },{ name: '广东', value: Math.round(Math.random() * 100) },{ name: '青海', value: Math.round(Math.random() * 100) },{ name: '西藏', value: Math.round(Math.random() * 100) },{ name: '四川', value: Math.round(Math.random() * 100) },{ name: '宁夏', value: Math.round(Math.random() * 100) },{ name: '海南', value: Math.round(Math.random() * 100) },// {name: '台湾',value: Math.round(Math.random()*100)},{ name: '香港', value: Math.round(Math.random() * 100) },{ name: '澳门', value: Math.round(Math.random() * 100) },],},],}
六、初始化地图
我的地图Json文件是下载放到项目里assets下的,你可以使用在线的也可以引用本地的
var myChart = echarts.init(document.getElementById('main')); //获取当前的div
echarts.registerMap('china', data) // 注册china.json的数据到初始化的echarts对象
myChart.setOption(mapOption) // 绑定地图的配置参数对象,参考第二步
myChart.resize()
效果如下:
完整代码如下:
<template><div id="app"><img alt="Vue logo" src="./assets/logo.png"><div id="main" style="width:1000px;height:800px;"></div></div>
</template><script>
import * as echarts from 'echarts';
import data from './assets/map.json'export default {name: 'App',mounted() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据var option = {tooltip: {trigger: 'item',formatter: (params) => {let showHtml = ''showHtml += `<span style="display: flex; font-size: 12px;">${'装机量'}:${params.name}</br></span>`return showHtml},},legend: {orient: 'vertical',left: 'left',data: [],},series: [{name: '安装信息',type: 'map',mapType: 'china',roam: false,label: {normal: {show: true,},emphasis: {show: true,},},emphasis: {scale: true,itemStyle: {areaColor: '#fff',},},symbolSize: function (val) {return val[2] / 15},showEffectOn: 'render',itemStyle: {areaColor: '#2043AA',borderColor: '#111',color: '#fff',},zlevel: 1,data: [{name: '北京',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{name: '天津',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{name: '上海',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{name: '重庆',value: Math.round(Math.random() * 100),warn: 10,problem: 12,},{ name: '河北', value: Math.round(Math.random() * 100) },{ name: '河南', value: Math.round(Math.random() * 100) },{ name: '云南', value: Math.round(Math.random() * 100) },{ name: '辽宁', value: Math.round(Math.random() * 100) },{ name: '黑龙江', value: Math.round(Math.random() * 100) },{ name: '湖南', value: Math.round(Math.random() * 100) },{ name: '安徽', value: Math.round(Math.random() * 100) },{ name: '山东', value: Math.round(Math.random() * 100) },{ name: '新疆', value: Math.round(Math.random() * 100) },{ name: '江苏', value: Math.round(Math.random() * 100) },{ name: '浙江', value: Math.round(Math.random() * 100) },{ name: '江西', value: Math.round(Math.random() * 100) },{ name: '湖北', value: Math.round(Math.random() * 100) },{ name: '广西', value: Math.round(Math.random() * 100) },{ name: '甘肃', value: Math.round(Math.random() * 100) },{ name: '山西', value: Math.round(Math.random() * 100) },{ name: '内蒙古', value: Math.round(Math.random() * 100) },{ name: '陕西', value: Math.round(Math.random() * 100) },{ name: '吉林', value: Math.round(Math.random() * 100) },{ name: '福建', value: Math.round(Math.random() * 100) },{ name: '贵州', value: Math.round(Math.random() * 100) },{ name: '广东', value: Math.round(Math.random() * 100) },{ name: '青海', value: Math.round(Math.random() * 100) },{ name: '西藏', value: Math.round(Math.random() * 100) },{ name: '四川', value: Math.round(Math.random() * 100) },{ name: '宁夏', value: Math.round(Math.random() * 100) },{ name: '海南', value: Math.round(Math.random() * 100) },// {name: '台湾',value: Math.round(Math.random()*100)},{ name: '香港', value: Math.round(Math.random() * 100) },{ name: '澳门', value: Math.round(Math.random() * 100) },],},],}echarts.registerMap('china', data) // 注册china.json的数据到初始化的echarts对象myChart.setOption(option) // 绑定地图的配置参数对象,参考第二步myChart.resize()}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>