echarts实现中国地图下钻进入下一级行政区(地图钻取)

获取geo数据:

可以使用node爬虫获取数据

最好多爬几遍,因为有时候会获取错误

实现逻辑

拥有geo数据后

  1. 请求geo数据
  2. 注册地图 registerMap
  3. 配置echarts
  4. 增加事件监听(点击事件)

如果点击了,回到第一步。功能就是循环以上4步逻辑

echarts实现

html

1
<div ref="echarts-dom" class="echarts-content"></div>

js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
export default {
data() {
return {
mapChart: null,
addressCode: []
};
},
mouted(){
this.mapChart = echarts.init(this.$refs["echarts-dom"]);
this.getData();
},
methods: {
getData("100000") {
fetch(`${process.env.VUE_APP_ORIGIN}/geoData/${code}.json`)
.then((res) => {
return res.json();
}).then((res) => {
this.addressCode = res.features;
echarts.registerMap("echartsMap", res);
this.setEchartsOptions();
})
.finally((err) => {
this.mapLoading = false;
});
},
// echarts配置
setEchartsOptions() {
this.mapChart.off("click"); //图表渲染前销毁点击事件
this.mapChart.setOption({
series: [
{
type: "map",
mapType: "echartsMap",
roam: true,
scaleLimit: {
min: 1.1,
max: 5.2,
},
data: this.addressCode,
// 地图模块样式
itemStyle: {
// 默认模块样式
normal: {
borderWidth: 1.3,
borderColor: "#00ffff",
areaColor: "#09295b",
},
// 鼠标经过模块样式
emphasis: {
show: true,
borderWidth: 3,
areaColor: "#0d559d",
label: {
show: true,
textStyle: {
color: "#fff",
},
},
},
},
label: {
show: true,
textStyle: {
color: "#fff",
},
},
},
],
},true);
this.addEchartsEventListener();
},
// 监听echarts事件
addEchartsEventListener() {
const that = this;
// 点击时间
this.mapChart.on("click", function (params) {
console.log(params.data);
that.getData(params.data.codeNumber);
});

// 移动 | 缩放
this.mapChart.on("georoam", (params) => {
that.$emit("swicthPanle", false);
});
},
}
}

echarts实现中国地图下钻进入下一级行政区(地图钻取)
https://github.com/chergn/chergn.github.io/bb26e407a438/
作者
全易
发布于
2024年3月28日
许可协议