Vue-Echarts中国地图使用详解

一、基础概念

Echarts 是由百度开源的一个数据可视化库,可以通过简单的配置实现动态可交互的数据展示。 Vue-Echarts 是 对 Echarts 的封装,使得在 Vue 项目中更加方便地使用 Echarts。

地图是 Echarts 中的一个重要模块,而中国地图是其中一个经典的实例。在 Vue 中使用中国地图需要引入 Vue-Echarts 和中国地图相关的 Javascript 文件。

二、配置基本选项

在 Vue 中使用 Echarts,需要在 vue 模板中引入 vue-echarts 组件,并传入 options 配置项,该配置项将对图表进行基础设置。可以在 options 中设置图表的主题、颜色、标题、图例等信息。


<template>
  <div class="map-container">
    <vue-echarts
      :options="options"
      :autoresize="true"
      :notMerge="true"
      :lazyUpdate="true"
    />
  </div>
</template>

<script>
import * as echarts from 'echarts';
import china from 'echarts/map/json/province/shanghai.json';
import 'echarts/map/js/china.js';
import 'echarts/extension/bmap/bmap.js';
import 'echarts-gl';
import i18n from '@/locale';

export default {
  name: 'Map',
  components: {
    'chart': ()=>import('echarts')
  },
  data: () => ({
    options: {
      title: {
        text: i18n.t('map_title'),
        left: 'center',
        top: '2%',
        textStyle: {
          color: '#fff',
          fontSize: 18,
          fontWeight: '400',
          fontFamily: 'MicrosoftYaHei',
          lineHeight: 1.2
        }
      },
      geo: {
        map: 'china',
        roam: true,
        selectedMode: 'single',
        label: {
          emphasis: {
            show: true
          }
        },
        itemStyle: {
          normal: {
            areaColor: '#323c48',
            borderColor: '#566f8a'
          },
          emphasis: {
            areaColor: '#2a333d',
            borderColor: '#566f8a'
          }
        }
      },
      series: [{
        type: 'map',
        map: 'china',
        roam: false,
        name: '',
        data: []
      }]
    }
  }),
  mounted() {
    echarts.registerMap('china', china);
  }
};
</script>

三、设置地图数据

在 Vue 中使用 Vue-Echarts 进行地图数据设置,需要引入 echarts 的数据格式。下面为例子中传入的数据格式,使用数组形式表示不同省份的数据值:


  {
    name: '北京',
    value: 0
  },
  {
    name: '天津',
    value: 0
  },
  {
    name: '上海',
    value: 0
  },
  {
    name: '重庆',
    value: 0
  },
  {
    name: '河北',
    value: 0
  },
  {
    name: '河南',
    value: 0
  }
  // etc.

四、使用自定义样式

在 Echarts 中设置样式可以使用 itemStyle 来进行设置,这可以帮助我们实现地图的个性化定制,比如调整颜色、边框、阴影等。下面是一个例子,设置了不同省份的颜色、边框、标签等样式。


 {
    name: '北京',
    value: 0,
    itemStyle: {
      areaColor: '#2a7bff',
      borderColor: '#fff',
      borderWidth: 1,
      shadowColor: '#fff',
      shadowBlur: 10,
      label: {
        show: true,
        textStyle: {
          color: '#fff'
        }
      }
    }
  },
  {
    name: '河北',
    value: 0,
    itemStyle: {
      areaColor: '#e24f48',
      borderColor: '#fff',
      borderWidth: 1,
      shadowColor: '#fff',
      shadowBlur: 10,
      label: {
        show: true,
        textStyle: {
          color: '#fff'
        }
      }
    }
  },
  {
    name: '河南',
    value: 0,
    itemStyle: {
      areaColor: '#8dc63f',
      borderColor: '#fff',
      borderWidth: 1,
      shadowColor: '#fff',
      shadowBlur: 10,
      label: {
        show: true,
        textStyle: {
          color: '#fff'
        }
      }
    }
  }

五、实现点击事件

在使用 Vue-Echarts 时,可以通过自定义事件来实现地图的点击事件。下面是一个例子,当用户点击某个省份时,把该省份的数据传给后端,并进行页面跳转。


  mounted() {
    const chart = this.$refs.chart.echartsInstance;
    const self = this;
    chart.on('click', (params) => {
      self.$router.push({ name: 'province', params: { provinceName: params.name } });
    });
  }

六、实现省市联动

在中国地图中,每个省份下可能有多个城市,需要通过省市的联动来展示每个省份的具体数据。可以在 Echarts 中使用 series 属性,来设置多个不同的 series 来呈现不同的数据。下面是一个例子,展示了浙江省的所有城市。


  {
    name: '杭州市',
    value: 0
  },
  {
    name: '宁波市',
    value: 0
  },
  {
    name: '温州市',
    value: 0
  },
  {
    name: '嘉兴市',
    value: 0
  },
  {
    name: '湖州市',
    value: 0
  },
  {
    name: '绍兴市',
    value: 0
  },
  {
    name: '金华市',
    value: 0
  },
  {
    name: '衢州市',
    value: 0
  },
  {
    name: '舟山市',
    value: 0
  },
  {
    name: '台州市',
    value: 0
  },
  {
    name: '丽水市',
    value: 0
  }

七、设置地图背景图

Echarts 中使用 BMap 进行地图渲染,可以使用 BMap 组件来设置百度地图的背景图片。下面是一个设置地图背景图的例子,使用了在百度坐标系统下的 x、y 坐标信息。


  bmap: {
    center: [120.13066322374, 30.240018034923],
    zoom: 14,
    roam: true,
    mapStyle: {
      styleJson: [
        {
          'featureType': 'land',
          'elementType': 'geometry',
          'stylers': {
            'color': '#212121'
          }
        },
        // ...
      ]
    },
    scaleControl: {
      'show': false
    }
  },

以上就是 Vue-Echarts 中国地图的使用详解,希望对大家有所帮助!

原创文章,作者:TEGWX,如若转载,请注明出处:https://www.506064.com/n/317394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
TEGWXTEGWX
上一篇 2025-01-11 16:27
下一篇 2025-01-11 16:27

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Echarts 地图 Label 增加背景图

    本文将从多个方面对 Echarts 地图 Label 增加背景图进行详细的阐述。 一、背景图的作用 为 Echarts 地图添加背景图可以使 Label 更加直观、美观,提升视觉效…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • ECharts地图轮播

    本文将从插件基础、数据准备及处理、地图呈现、轮播控制等方面,对ECharts地图轮播进行详细阐述。 一、插件基础 ECharts官方提供了一个名为“echarts-gl”的插件,它…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25

发表回复

登录后才能评论