echarts国地图渲染数据的处理
echarts中国地图的渲染方法
-
// 获取中国地图
-
getChinaMap() {
-
// console.log(this.provinceData, "中国地图22222222");
-
var myEcharts = echarts.init(document.getElementById("china"));
-
var option = {
-
// title: {
-
// //标题样式
-
// text: "中国地图",
-
// x: "center",
-
// textStyle: {
-
// fontSize: 18,
-
// color: "black"
-
// }
-
// },
-
tooltip: {
-
trigger: "item",
-
formatter: function(params) {
-
console.log(params);
-
if (params.name) {
-
return (
-
params.name
-
// " : "
-
"<br/>"
-
// "集团:"
-
// (isNaN(params.value) ? 0 : parseInt(params.value))
-
// "<br/>"
-
"项目:"
-
(isNaN(params.projectNum) ? 0 : parseInt(params.projectNum))
-
);
-
}
-
}
-
},
-
visualMap: {
-
show: false,
-
//视觉映射组件
-
top: "bottom",
-
left: "left",
-
min: 10,
-
max: 500000,
-
//text: ['High', 'Low'],
-
realtime: false, //拖拽时,是否实时更新
-
calculable: true, //是否显示拖拽用的手柄
-
inRange: {
-
color: ["lightskyblue", "yellow", "orangered"]
-
}
-
},
-
series: [
-
{
-
name: "模拟数据",
-
type: "map",
-
mapType: "china",
-
roam: false, //是否开启鼠标缩放和平移漫游
-
itemStyle: {
-
//地图区域的多边形 图形样式
-
normal: {
-
//是图形在默认状态下的样式
-
label: {
-
show: true, //是否显示标签
-
textStyle: {
-
color: "black"
-
}
-
}
-
},
-
zoom: 1.5, //地图缩放比例,默认为1
-
emphasis: {
-
//是图形在高亮状态下的样式,比如在鼠标悬浮或者图例联动高亮时
-
label: { show: true }
-
}
-
},
-
top: "0%",
-
bottom: "0%", //组件距离容器的距离
-
data: this.provinceData
-
}
-
]
-
};
-
// 使用刚指定的配置项和数据显示图表。
-
myEcharts.setOption(option);
-
window.addEventListener("resize", () => {
-
if (myEcharts) {
-
myEcharts.resize();
-
}
-
});
-
},
provinceData为需要渲染的数据,后端现在返给我们的是这样的数据类型,暂且称res.data
因为后端返给我们的是有项目(projectNum)和集团(groupNum)的对象,需要根据provindeGeccode(各省编码),结合中国各省市的数据(可以百度获取,这里是provinceList)来进行重新整合
下面这是百度获取的省市的编码信息,我们暂且叫它provinceList
下面是具体的数据处理代码:
-
// 获取省市项目和集团
-
obtainProvinceProject() {
-
// console.log("77777777", this.groupId, this.projectId);
-
const obj = {
-
groupId: this.groupId,
-
projectId: this.projectId
-
};
-
getProvinceProject(obj)
-
.then(res => {
-
console.log("resulting", res.data, this.provinceList);
-
-
if (res && res.data && res.data.length !== 0) {
-
this.provinceList.push({
-
name: "台湾省"
-
});
-
// let datas = {};
-
for (let i of this.provinceList) {
-
for (let j of res.data) {
-
if (i.code == j.provinceGeocode) {
-
console.log("code相同", i, j);
-
// i.name = i.name.slice(0, 1);
-
i.value = j.groupNum;
-
i.projectNum = j.projectNum;
-
-
// datas.value = j.projectNum;
-
// datas.projectNum = j.groupNum;
-
-
// i.value = j.projectNum;
-
// i.projectNum = j.groupNum;
-
} else {
-
i.value = 0;
-
i.projectNum = 0;
-
-
// datas.value = 0;
-
// datas.projectNum = 0;
-
}
-
const name = i.name;
-
console.log("i.name", i.name, "i", i, "j", j);
-
if (i.name == "黑龙江省") {
-
i.name = i.name.slice(0, 3);
-
} else if (i.name == "内蒙古自治区") {
-
i.name = i.name.slice(0, 3);
-
} else if (
-
i.name == "新疆维吾尔自治区" ||
-
"西藏自治区" ||
-
"宁夏回族自治区" ||
-
"广西壮族自治区"
-
) {
-
i.name = i.name.slice(0, 2);
-
} else {
-
i.name = i.name.slice(0, name.length - 1);
-
}
-
-
// this.provinceData.push(i);
-
// const num = [];
-
// num.push(datas);
-
// console.log(num);
-
// this.provinceData = new Set(num);
-
this.provinceData.push(i);
-
}
-
}
-
console.log(this.provinceData, "22222222");
-
// this.provinceData = [
-
// { name: "北京", value: 350000, key: "1" },
-
-
// ...this.provinceList
-
// ];
-
}
-
})
-
.catch(err => {});
-
},
这样处理的结果是不对的,双重循环筛选之后的数据,由原来的31个变成了96个,因为经历了双重遍历,定义了新数据provinceData去接收
正确的做法如下:
-
// 获取省市项目和集团
-
obtainProvinceProject() {
-
const obj = {
-
groupId: this.groupId,
-
projectId: this.projectId
-
};
-
getProvinceProject(obj)
-
.then(res => {
-
console.log("resulting", res.data, this.provinceList);
-
if (res && res.data && res.data.length !== 0) {
-
this.provinceList.push({
-
name: "台湾省"
-
});
-
for (let a = 0; a < this.provinceList.length; a ) {
-
let i = this.provinceList[a];
-
i.value = 0;
-
i.groupNum = 0;
-
for (let j of res.data) {
-
if (i.code == j.provinceGeocode) {
-
// this.$set(i, "value", j.projectNum);
-
i.value = j.projectNum;
-
i.groupNum = j.groupNum;
-
console.log("item", i, j);
-
}
-
if (
-
i.name == "新疆维吾尔自治区" ||
-
i.name == "西藏自治区" ||
-
i.name == "宁夏回族自治区" ||
-
i.name == "广西壮族自治区"
-
) {
-
i.name = i.name.slice(0, 2);
-
} else if (i.name === "内蒙古自治区") {
-
i.name = i.name.slice(0, 3);
-
} else {
-
i.name = i.name.replace("省", "");
-
i.name = i.name.replace("市", "");
-
}
-
}
-
}
-
console.log(this.provinceList, "22222222");
-
}
-
})
-
.catch(err => {});
-
},
不定义新数据provinceData去接收,而是直接改变了provinceList(省市区编码信息),最终直接去渲染改变后的provinceList,而且echarts中国地图数据渲染有要求,要对name进行一定的处理,才能渲染上去,(echarts的数据必须要包含label和value)
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbeeef
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01