当前位置:首页 > VUE

vue 实现中国地图

2026-02-09 16:44:19VUE

使用 Vue 实现中国地图

安装依赖

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

npm install echarts echarts-china-provinces-pypkg

引入 ECharts 和中国地图数据

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

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

创建地图容器

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

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

初始化地图

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

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 },
    // 其他省份数据...
  ],
  // 其他配置...
}]

响应式调整

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

vue 实现中国地图

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.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue 实现tabs

vue 实现tabs

Vue 实现 Tabs 组件的方法 使用动态组件和 v-for 在 Vue 中实现 Tabs 可以通过动态组件和 v-for 指令结合完成。定义一个 tabs 数组,包含每个标签的标题和对应的组件。…

vue实现主页

vue实现主页

Vue 实现主页的基本步骤 创建一个 Vue 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue实现公式

vue实现公式

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

vue实现fadein

vue实现fadein

Vue 实现 FadeIn 效果 在 Vue 中实现淡入(FadeIn)效果可以通过 CSS 过渡、动画或第三方库实现。以下是几种常见方法: 使用 CSS 过渡 通过 Vue 的过渡系统结合 CSS…

vue实现treeview

vue实现treeview

Vue 实现 TreeView 的方法 使用递归组件实现 TreeView 递归组件是 Vue 中实现 TreeView 的常见方式。通过组件调用自身,可以轻松处理嵌套的树形结构数据。 <te…