当前位置:首页 > VUE

vue 实现中国地图

2026-02-09 16:44:19VUE

使用 Vue 实现中国地图

安装依赖

需要安装 ECharts 和对应的中国地图数据包。通过 npm 或 yarn 安装:

npm install echarts echarts-china-provinces-pypkg

引入 ECharts 和中国地图数据

在 Vue 组件中引入 ECharts 和中国地图数据:

vue 实现中国地图

import * as echarts from 'echarts';
import 'echarts/map/js/china';

创建地图容器

在模板中创建一个用于渲染地图的 DOM 容器:

<template>
  <div id="china-map" style="width: 800px; height: 600px;"></div>
</template>

初始化地图

mounted 钩子中初始化地图并配置选项:

vue 实现中国地图

mounted() {
  const chart = echarts.init(document.getElementById('china-map'));
  chart.setOption({
    series: [{
      type: 'map',
      map: 'china',
      roam: true,
      label: {
        show: true,
        color: '#333'
      },
      itemStyle: {
        areaColor: '#e0f7fa',
        borderColor: '#81d4fa'
      },
      emphasis: {
        label: {
          color: '#fff'
        },
        itemStyle: {
          areaColor: '#0288d1'
        }
      }
    }]
  });
}

添加数据交互

如果需要展示各省份数据,可以通过 data 属性绑定:

series: [{
  type: 'map',
  map: 'china',
  data: [
    { name: '北京', value: 100 },
    { name: '上海', value: 200 },
    // 其他省份数据...
  ],
  // 其他配置...
}]

响应式调整

监听窗口大小变化,动态调整地图尺寸:

window.addEventListener('resize', () => {
  chart.resize();
});

完整组件示例

<template>
  <div id="china-map" style="width: 100%; height: 100%;"></div>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts/map/js/china';

export default {
  name: 'ChinaMap',
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      const chart = echarts.init(document.getElementById('china-map'));
      chart.setOption({
        tooltip: {
          trigger: 'item',
          formatter: '{b}<br/>数值: {c}'
        },
        visualMap: {
          min: 0,
          max: 200,
          text: ['高', '低'],
          realtime: false,
          calculable: true,
          inRange: {
            color: ['#e0f7fa', '#0288d1']
          }
        },
        series: [{
          type: 'map',
          map: 'china',
          roam: true,
          data: [
            { name: '北京', value: 100 },
            { name: '天津', value: 50 },
            { name: '上海', value: 200 }
          ],
          label: {
            show: true
          },
          emphasis: {
            label: {
              show: true
            }
          }
        }]
      });
      window.addEventListener('resize', () => chart.resize());
    }
  }
};
</script>

注意事项

  • 确保容器有明确的宽高,否则地图无法渲染。
  • 如果需要更详细的地图数据(如市级),需额外引入市级地图包。
  • 在组件销毁时移除事件监听,避免内存泄漏。

标签: 中国地图vue
分享给朋友:

相关文章

vue实现组件循环

vue实现组件循环

Vue 组件循环的实现方法 在 Vue 中实现组件循环通常使用 v-for 指令,可以循环渲染数组或对象的数据到组件上。 基本数组循环 通过 v-for 指令遍历数组,渲染多个相同结构的组件。…

vue实现走势图

vue实现走势图

Vue 实现走势图的方法 使用 ECharts 库 ECharts 是一个强大的数据可视化库,支持多种图表类型,包括走势图(折线图)。在 Vue 项目中可以通过 vue-echarts 封装库或直接使…

vue实现打印二维码

vue实现打印二维码

安装二维码生成库 使用 qrcode 或 vue-qrcode 库生成二维码。通过 npm 安装: npm install qrcode vue-qrcode 生成二维码 在 Vue 组…

vue实现公式

vue实现公式

在Vue中实现公式展示或计算可以通过多种方式实现,以下为具体方法: 使用模板插值与计算属性 若公式较简单,可直接在模板中使用插值表达式或计算属性。例如计算圆的面积: <templat…

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…

vue实现接口

vue实现接口

在 Vue 中实现接口请求 Vue 本身不直接提供 HTTP 请求功能,通常需要借助第三方库如 axios 或 fetch 来实现接口请求。以下是几种常见方法: 使用 axios 发送请求 安装 a…