先看效果图
可以看出,图例中不仅展示了湖北省所有市的区域范围,而且随州市的三个行政区划也显示在其中,上完整代码
<template>
<div>
<div id="allMap" style="width: 1000px; height: 800px"></div>
</div>
</template>
<script>
import AllJson from '@/assets/json/All.json'; // 此json下面会具体讲
import * as echarts from 'echarts';
export default {
name: 'Demo',
data() {
return {
}
},
mounted() {
this.allMap();
},
methods: {
allMap() {
console.log("412")
var option = {
backgroundColor: "#041646",
title: {
show: true,
text: "湖北省",
top: '10',
textStyle: {
color: 'white'
},
left: "center"
},
series: [
{
type: "map", //特效散点图
mapType: '湖北',
nameProperty: 'name',
label: {
show: true
},
geoIndex: 0,
data: [
{
name: '随州市',
label: {
position: 'top',
color: 'red',
fontWeight: 'bold',
fontSize: '16'
},
itemStyle: {
borderColor: 'red',
borderWidth: '2',
}
},
],
nameMap: {
'十堰市': '十堰市',
'神农架林区': '神农架',
'恩施土家族苗族自治州': '恩施州',
'宜昌市': '宜昌市',
'襄阳市': '襄阳市',
'荆门市': '荆门市',
'荆州市': '荆州市',
'潜江市': '潜江市',
'天门市': '天门市',
'仙桃市': '仙桃市',
'随州市': '随州市',
'孝感市': '孝感市',
'咸宁市': '咸宁市',
'武汉市': '武汉市',
'黄冈市': '黄冈市',
'黄石市': '黄石市',
'鄂州市': '鄂州市'
},
}
]
}
var mapChart = echarts.init(document.getElementById("allMap"));
echarts.registerMap('湖北', AllJson);
mapChart.setOption(option);
},
}
}
</script>
import AllJson from '@/assets/json/All.json';
这个JSON文件内容格式跟其他文章提到的是一致的,但从格式上讲,每个区域的边界描边的点位都被限制在这一个数组里,Echarts并不会层级读取,就比如说这是一级下拉选,就算你传一个层级下拉选,它也不会读取子级区域
我的办法是:既然它只会读取这一级的区域对象,干脆把市下面区县行政区划的描边对象也传入进来,都放入features这个数组里
需要注意的是:Echarts渲染地图是依据features中区域对象的先后顺序,比如一个市的所有区县对象在市对象前面,就会被后渲染的市描边点位遮挡,这种情况可以将市范围设置透明度或调整JSON文件里面的先后顺序。
有对JSON格式还不理解的可以去我的资源里面下载完整的JSON,JSON文件太大了贴不了文章里,在JSON中搜索“曾都区”便可看到我在湖北省所有市描边点位后增加的三个区县
地图选择器的链接也放这里了