Echarts Map地图下钻至县级

2022-12-09,,,

**准备工作:**
1.首先使用vue-cli的脚手架生成vue项目。

2.然后使用npm安装echarts
npm install echarts -S

3.安装完后再mian.js中挂载到vue的实例上使用,当然你也可以哪里需要在再哪里引入
引入:
import echarts from 'echarts' // e-charts
挂载:
Vue.prototype.$echarts = echarts

**开始使用**
这里我是直接写在当前文件夹中,并没有封装在公共组件中,下一篇在接着讲怎么把echarts封装成组件
1.需要把视图装着的容器 <div id="main style="width: 100%;height:800px;"></div>

2.把echarts的逻辑代码写在methods:{}中,然后在调用这个方法
mounted () {
this.mapChart()
},
3.方法编写:直接上代码

methods: {
mapChart () {
var myMapChart = this.$echarts.init(document.getElementById('main'))
// 34个省、市、自治区的名字拼音映射数组
var provinces = {
// 23个省
台湾: 'taiwan',
河北: 'hebei',
山西: 'shanxi',
辽宁: 'liaoning',
吉林: 'jilin',
黑龙江: 'heilongjiang',
江苏: 'jiangsu',
浙江: 'zhejiang',
安徽: 'anhui',
福建: 'fujian',
江西: 'jiangxi',
山东: 'shandong',
河南: 'henan',
湖北: 'hubei',
湖南: 'hunan',
广东: 'guangdong',
海南: 'hainan',
四川: 'sichuan',
贵州: 'guizhou',
云南: 'yunnan',
陕西: 'shanxi1',
甘肃: 'gansu',
青海: 'qinghai',
// 5个自治区
新疆: 'xinjiang',
广西: 'guangxi',
内蒙古: 'neimenggu',
宁夏: 'ningxia',
西藏: 'xizang',
// 4个直辖市
北京: 'beijing',
天津: 'tianjin',
上海: 'shanghai',
重庆: 'chongqing',
// 2个特别行政区
香港: 'xianggang',
澳门: 'aomen'
}
var cityMap = {
北京市: '110100',
天津市: '120100',
上海市: '310100',
重庆市: '500100',
崇明县: '310200',
湖北省直辖县市: '429000',
铜仁市: '522200',
毕节市: '522400',
石家庄市: '130100',
唐山市: '130200',
秦皇岛市: '130300',
邯郸市: '130400',
邢台市: '130500',
保定市: '130600',
张家口市: '130700',
承德市: '130800',
沧州市: '130900',
廊坊市: '131000',
衡水市: '131100',
太原市: '140100',
大同市: '140200',
阳泉市: '140300',
长治市: '140400',
晋城市: '140500',
朔州市: '140600',
晋中市: '140700',
运城市: '140800',
忻州市: '140900',
临汾市: '141000',
吕梁市: '141100',
呼和浩特市: '150100',
包头市: '150200',
乌海市: '150300',
赤峰市: '150400',
通辽市: '150500',
鄂尔多斯市: '150600',
呼伦贝尔市: '150700',
巴彦淖尔市: '150800',
乌兰察布市: '150900',
兴安盟: '152200',
锡林郭勒盟: '152500',
阿拉善盟: '152900',
沈阳市: '210100',
大连市: '210200',
鞍山市: '210300',
抚顺市: '210400',
本溪市: '210500',
丹东市: '210600',
锦州市: '210700',
营口市: '210800',
阜新市: '210900',
辽阳市: '211000',
盘锦市: '211100',
铁岭市: '211200',
朝阳市: '211300',
葫芦岛市: '211400',
长春市: '220100',
吉林市: '220200',
四平市: '220300',
辽源市: '220400',
通化市: '220500',
白山市: '220600',
松原市: '220700',
白城市: '220800',
延边朝鲜族自治州: '222400',
哈尔滨市: '230100',
齐齐哈尔市: '230200',
鸡西市: '230300',
鹤岗市: '230400',
双鸭山市: '230500',
大庆市: '230600',
伊春市: '230700',
佳木斯市: '230800',
七台河市: '230900',
牡丹江市: '231000',
黑河市: '231100',
绥化市: '231200',
大兴安岭地区: '232700',
南京市: '320100',
无锡市: '320200',
徐州市: '320300',
常州市: '320400',
苏州市: '320500',
南通市: '320600',
连云港市: '320700',
淮安市: '320800',
盐城市: '320900',
扬州市: '321000',
镇江市: '321100',
泰州市: '321200',
宿迁市: '321300',
杭州市: '330100',
宁波市: '330200',
温州市: '330300',
嘉兴市: '330400',
湖州市: '330500',
绍兴市: '330600',
金华市: '330700',
衢州市: '330800',
舟山市: '330900',
台州市: '331000',
丽水市: '331100',
合肥市: '340100',
芜湖市: '340200',
蚌埠市: '340300',
淮南市: '340400',
马鞍山市: '340500',
淮北市: '340600',
铜陵市: '340700',
安庆市: '340800',
黄山市: '341000',
滁州市: '341100',
阜阳市: '341200',
宿州市: '341300',
六安市: '341500',
亳州市: '341600',
池州市: '341700',
宣城市: '341800',
福州市: '350100',
厦门市: '350200',
莆田市: '350300',
三明市: '350400',
泉州市: '350500',
漳州市: '350600',
南平市: '350700',
龙岩市: '350800',
宁德市: '350900',
南昌市: '360100',
景德镇市: '360200',
萍乡市: '360300',
九江市: '360400',
新余市: '360500',
鹰潭市: '360600',
赣州市: '360700',
吉安市: '360800',
宜春市: '360900',
抚州市: '361000',
上饶市: '361100',
济南市: '370100',
青岛市: '370200',
淄博市: '370300',
枣庄市: '370400',
东营市: '370500',
烟台市: '370600',
潍坊市: '370700',
济宁市: '370800',
泰安市: '370900',
威海市: '371000',
日照市: '371100',
莱芜市: '371200',
临沂市: '371300',
德州市: '371400',
聊城市: '371500',
滨州市: '371600',
菏泽市: '371700',
郑州市: '410100',
开封市: '410200',
洛阳市: '410300',
平顶山市: '410400',
安阳市: '410500',
鹤壁市: '410600',
新乡市: '410700',
焦作市: '410800',
濮阳市: '410900',
许昌市: '411000',
漯河市: '411100',
三门峡市: '411200',
南阳市: '411300',
商丘市: '411400',
信阳市: '411500',
周口市: '411600',
驻马店市: '411700',
省直辖县级行政区划: '469000',
武汉市: '420100',
黄石市: '420200',
十堰市: '420300',
宜昌市: '420500',
襄阳市: '420600',
鄂州市: '420700',
荆门市: '420800',
孝感市: '420900',
荆州市: '421000',
黄冈市: '421100',
咸宁市: '421200',
随州市: '421300',
恩施土家族苗族自治州: '422800',
长沙市: '430100',
株洲市: '430200',
湘潭市: '430300',
衡阳市: '430400',
邵阳市: '430500',
岳阳市: '430600',
常德市: '430700',
张家界市: '430800',
益阳市: '430900',
郴州市: '431000',
永州市: '431100',
怀化市: '431200',
娄底市: '431300',
湘西土家族苗族自治州: '433100',
广州市: '440100',
韶关市: '440200',
深圳市: '440300',
珠海市: '440400',
汕头市: '440500',
佛山市: '440600',
江门市: '440700',
湛江市: '440800',
茂名市: '440900',
肇庆市: '441200',
惠州市: '441300',
梅州市: '441400',
汕尾市: '441500',
河源市: '441600',
阳江市: '441700',
清远市: '441800',
东莞市: '441900',
中山市: '442000',
潮州市: '445100',
揭阳市: '445200',
云浮市: '445300',
南宁市: '450100',
柳州市: '450200',
桂林市: '450300',
梧州市: '450400',
北海市: '450500',
防城港市: '450600',
钦州市: '450700',
贵港市: '450800',
玉林市: '450900',
百色市: '451000',
贺州市: '451100',
河池市: '451200',
来宾市: '451300',
崇左市: '451400',
海口市: '460100',
三亚市: '460200',
三沙市: '460300',
成都市: '510100',
自贡市: '510300',
攀枝花市: '510400',
泸州市: '510500',
德阳市: '510600',
绵阳市: '510700',
广元市: '510800',
遂宁市: '510900',
内江市: '511000',
乐山市: '511100',
南充市: '511300',
眉山市: '511400',
宜宾市: '511500',
广安市: '511600',
达州市: '511700',
雅安市: '511800',
巴中市: '511900',
资阳市: '512000',
阿坝藏族羌族自治州: '513200',
甘孜藏族自治州: '513300',
凉山彝族自治州: '513400',
贵阳市: '520100',
六盘水市: '520200',
遵义市: '520300',
安顺市: '520400',
黔西南布依族苗族自治州: '522300',
黔东南苗族侗族自治州: '522600',
黔南布依族苗族自治州: '522700',
昆明市: '530100',
曲靖市: '530300',
玉溪市: '530400',
保山市: '530500',
昭通市: '530600',
丽江市: '530700',
普洱市: '530800',
临沧市: '530900',
楚雄彝族自治州: '532300',
红河哈尼族彝族自治州: '532500',
文山壮族苗族自治州: '532600',
西双版纳傣族自治州: '532800',
大理白族自治州: '532900',
德宏傣族景颇族自治州: '533100',
怒江傈僳族自治州: '533300',
迪庆藏族自治州: '533400',
拉萨市: '540100',
昌都地区: '542100',
山南地区: '542200',
日喀则地区: '542300',
那曲地区: '542400',
阿里地区: '542500',
林芝地区: '542600',
西安市: '610100',
铜川市: '610200',
宝鸡市: '610300',
咸阳市: '610400',
渭南市: '610500',
延安市: '610600',
汉中市: '610700',
榆林市: '610800',
安康市: '610900',
商洛市: '611000',
兰州市: '620100',
嘉峪关市: '620200',
金昌市: '620300',
白银市: '620400',
天水市: '620500',
武威市: '620600',
张掖市: '620700',
平凉市: '620800',
酒泉市: '620900',
庆阳市: '621000',
定西市: '621100',
陇南市: '621200',
临夏回族自治州: '622900',
甘南藏族自治州: '623000',
西宁市: '630100',
海东地区: '632100',
海北藏族自治州: '632200',
黄南藏族自治州: '632300',
海南藏族自治州: '632500',
果洛藏族自治州: '632600',
玉树藏族自治州: '632700',
海西蒙古族藏族自治州: '632800',
银川市: '640100',
石嘴山市: '640200',
吴忠市: '640300',
固原市: '640400',
中卫市: '640500',
乌鲁木齐市: '650100',
克拉玛依市: '650200',
吐鲁番地区: '652100',
哈密地区: '652200',
昌吉回族自治州: '652300',
博尔塔拉蒙古自治州: '652700',
巴音郭楞蒙古自治州: '652800',
阿克苏地区: '652900',
克孜勒苏柯尔克孜自治州: '653000',
喀什地区: '653100',
和田地区: '653200',
伊犁哈萨克自治州: '654000',
塔城地区: '654200',
阿勒泰地区: '654300',
自治区直辖县级行政区划: '659000',
台湾省: '710000',
香港特别行政区: '810100',
澳门特别行政区: '820000'
} // 直辖市和特别行政区-只有二级地图,没有三级地图
var special = ['北京', '天津', '上海', '重庆', '香港', '澳门']
var mapdata = []
var _that = this
// 这是组件开始初始化时需要拉去的数据--中国地图的数据
$.getJSON('static/map/china.json', function (data) {
let d = []
for (var i = 0; i < data.features.length; i++) {
d.push({
name: data.features[i].properties.name
})
} mapdata = d
// 注册地图
_that.$echarts.registerMap('china', data)
// 绘制地图
renderMap('china', d)
})
myMapChart.on('click', function (params) {
if (params.name in provinces) {
// 如果点击的是34个省、市、自治区,绘制选中地区的二级地图
$.getJSON(
'static/map/province/' + provinces[params.name] + '.json',
function (data) {
_that.$echarts.registerMap(params.name, data)
var d = []
for (var i = 0; i < data.features.length; i++) {
d.push({
name: data.features[i].properties.name
})
}
renderMap(params.name, d)
}
)
} else if (params.seriesName in provinces) {
// 如果是【直辖市/特别行政区】只有二级下钻
if (special.indexOf(params.seriesName) >= 0) {
renderMap('china', mapdata)
} else {
// 显示县级地图
$.getJSON(
'static/map/city/' + cityMap[params.name] + '.json',
function (data) {
_that.$echarts.registerMap(params.name, data)
var d = []
for (var i = 0; i < data.features.length; i++) {
d.push({
name: data.features[i].properties.name
})
}
renderMap(params.name, d)
}
)
}
} else {
// 点击县级时是否返回
renderMap('china', mapdata)
}
})
// 初始化绘制全国地图配置
var option = {
backgroundColor: '#404a59',
title: {
text: 'Echarts3 中国地图下钻至县级',
subtext: '三级下钻',
left: 'center',
textStyle: {
color: '#fff',
fontSize: 16,
fontWeight: 'normal',
fontFamily: 'Microsoft YaHei'
},
subtextStyle: {
color: '#ccc',
fontSize: 13,
fontWeight: 'normal',
fontFamily: 'Microsoft YaHei'
}
},
tooltip: {
trigger: 'item',
formatter: '{b}'
},
toolbox: {
show: true,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
dataView: { readOnly: false },
restore: {},
saveAsImage: {}
},
iconStyle: {
normal: {
color: '#fff'
}
}
},
animationDuration: 1000,
animationEasing: 'cubicOut',
animationDurationUpdate: 1000
} function renderMap (map, data) {
// 初始化绘制全国地图配置
console.log(map)
option.title.subtext = map
option.series = [
{
name: map,
type: 'map',
mapType: map,
roam: false,
data: data,
// data: convertedData[0],
nameMap: {
china: '中国'
},
label: {
normal: {
show: true,
textStyle: {
color: '#999',
fontSize: 13
}
},
emphasis: {
show: true,
textStyle: {
color: '#fff',
fontSize: 13
}
}
},
itemStyle: {
normal: {
areaColor: '#323c48',
borderColor: 'dodgerblue'
},
emphasis: {
areaColor: 'darkorange'
}
}
}
] // 渲染地图
myMapChart.setOption(option)
}
}
}

Echarts Map地图下钻至县级的相关教程结束。

《Echarts Map地图下钻至县级.doc》

下载本文的Word格式文档,以方便收藏与打印。