vue+ECharts如何实现可视化地图绘制和省市区钻取并对接后端数据,如何用图片来渲染后端返回的坐标进行锚点?

vue+ECharts如何实现可视化地图绘制和省市区钻取并对接后端数据,如何用图片来渲染后端返回的坐标进行锚点?

“Devil组”引证GPT后的撰写:

  • 用ECharts提供的地图组件。该组件支持使用JSON格式的地图数据和自定义的数据结合来渲染地图,并且还支持省市区的钻取操作。

以下是一个简单的示例,展示如何使用ECharts绘制地图和实现省市区钻取:

<template>
  <div id="chart-container" style="width: 100%; height: 500px;"></div>
</template>

<script>
import echarts from 'echarts'
import chinaMapData from './china.json'

export default {
  data() {
    return {
      chart: null
    }
  },
  mounted() {
    this.initChart()
  },
  methods: {
    initChart() {
      // 初始化ECharts实例
      this.chart = echarts.init(document.getElementById('chart-container'))

      // 设置地图数据
      echarts.registerMap('china', chinaMapData)

      // 设置初始省份地图数据
      const initData = [
        {name: '北京', value: 100},
        {name: '天津', value: 100},
        {name: '上海', value: 100},
        {name: '重庆', value: 100},
        {name: '河北', value: 100},
        {name: '河南', value: 100},
        {name: '云南', value: 100},
        {name: '辽宁', value: 100},
        {name: '黑龙江', value: 100},
        {name: '湖南', value: 100},
        {name: '安徽', value: 100},
        {name: '山东', value: 100},
        {name: '新疆', value: 100},
        {name: '江苏', value: 100},
        {name: '浙江', value: 100},
        {name: '江西', value: 100},
        {name: '湖北', value: 100},
        {name: '广西', value: 100},
        {name: '甘肃', value: 100},
        {name: '山西', value: 100},
        {name: '内蒙古', value: 100},
        {name: '陕西', value: 100},
        {name: '吉林', value: 100},
        {name: '福建', value: 100},
        {name: '贵州', value: 100},
        {name: '广东', value: 100},
        {name: '青海', value: 100},
        {name: '西藏', value: 100},
        {name: '四川', value: 100},
        {name: '宁夏', value: 100},
        {name: '海南', value: 100},
        {name: '台湾', value: 100},
        {name: '香港', value: 100},
        {name: '澳门', value: 100}
      ]
// 设置地图配置项
const option = {
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 200,
left: 'left',
top: 'bottom',
text: ['高', '低'], // 文本,默认为数值文本
calculable: true
},
series: [
{
name: '省份数据',
type: 'map',
mapType: 'china',
label: {
show: true,
fontSize: 12
},
itemStyle: {
normal: {
borderWidth: 0.5, // 区域边框宽度
borderColor: '#ffffff', // 区域边框颜色
areaColor: '#eeeeee' // 区域颜色
},
emphasis: {
borderWidth: 0.5,
borderColor: '#ffffff',
areaColor: '#aaaaaa'
}
},
data: initData
}
]
}  // 设置地图点击事件
  this.chart.on('click', (params) => {
    const name = params.name
    console.log('点击了省份:', name)
    this.loadCityData(name)
  })

  // 绘制地图
  this.chart.setOption(option)
},
loadCityData(provinceName) {
  console.log('加载城市数据:', provinceName)
  // 这里省略省份对应城市数据加载的代码
  // 实现方式:根据省份名字异步加载对应城市数据,然后更新地图
}
}
}
</script>
<style scoped>
/* 这里可以添加自定义样式 */
</style>


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:VUE+Echarts+省市地图钻取(简洁版,超详细)
  • 除此之外, 这篇博客: VUE+Echarts+省市地图钻取(简洁版,超详细)中的 注意:下面这些地方一定要根据自身情况进行修改,不然会报错 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1、这个地方我用echarts代替了this.$echarts,所以代码里面都是用的echarts对象
    在这里插入图片描述
    2、修改代码中的路径,使用import方式导入的文件在打包后没问题,主要是第二张图片中的引入方式。
    在这里插入图片描述
    下面这种方式在本地运行时是没问题的,但是打包后会找不到地图文件,按我的代码的话,我需要将'../../../static/province/' + province + '.json'修改为'./static/province/' + province + '.json'后打包,才能在线上运行。
    在这里插入图片描述
    3、我使用的是懒加载的方式来加载省级地图的,有的人是一次性全部加载进去,像我在data里面注释的那种代码一样,那样的方式要import 34 个地图文件,然后循环注册地图。我使用的this.fetchGet()这种请求函数是我自己封装好的,就和平常请求后台数据一样,不会的同学可以参考

    echarts官网
    在这里插入图片描述
    4、在进行地图切换之前,一定要记得使用this.map.dispose()将地图对象注销,不然会发生以下情况。
    在这里插入图片描述

    以上是echarts钻取地图时值得注意的坑,由于时间原因还有一些不完善的地方,请勿喷!!!
    如果在使用过程中有遇到问题,欢迎大家留言讨论,这里是echarts地图资源数据,喜欢的朋友请点个赞呗,O(∩_∩)O哈哈~


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^