当前位置:首页 > VUE

vue 实现中国地图

2026-03-27 01:32:33VUE

使用 ECharts 实现中国地图

安装 ECharts 和地图数据依赖

npm install echarts echarts-china-provinces-pypkg

在 Vue 组件中引入

import * as echarts from 'echarts'
import 'echarts/map/js/china' // 引入中国地图数据

基本地图组件实现

<template>
  <div ref="mapContainer" style="width: 800px; height: 600px;"></div>
</template>

<script>
export default {
  mounted() {
    this.initMap()
  },
  methods: {
    initMap() {
      const chart = echarts.init(this.$refs.mapContainer)
      const option = {
        title: {
          text: '中国地图示例'
        },
        tooltip: {
          trigger: 'item',
          formatter: '{b}'
        },
        series: [{
          name: '中国',
          type: 'map',
          map: 'china',
          label: {
            show: true
          },
          emphasis: {
            label: {
              show: true
            }
          },
          data: []
        }]
      }
      chart.setOption(option)
    }
  }
}
</script>

添加交互功能

鼠标悬停高亮效果

series: [{
  // ...其他配置
  emphasis: {
    itemStyle: {
      areaColor: '#f4d942'
    }
  }
}]

点击省份触发事件

vue 实现中国地图

chart.on('click', params => {
  console.log('点击省份:', params.name)
  this.$emit('province-click', params.name)
})

添加数据可视化

显示各省份数据

data: [
  { name: '北京', value: 100 },
  { name: '上海', value: 80 },
  { name: '广东', value: 120 },
  // 其他省份数据...
]

配置视觉映射

visualMap: {
  min: 0,
  max: 200,
  text: ['高', '低'],
  realtime: false,
  calculable: true,
  inRange: {
    color: ['#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695']
  }
}

响应式处理

窗口大小变化时自适应

vue 实现中国地图

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

组件销毁时清理

beforeDestroy() {
  window.removeEventListener('resize', this.resizeHandler)
  if (this.chart) {
    this.chart.dispose()
  }
}

进阶功能实现

地图下钻到省级

// 需要先注册省级地图数据
import provinceMap from 'echarts/map/js/province/guangdong'

// 点击事件处理
chart.on('click', params => {
  if (params.name === '广东') {
    echarts.registerMap('guangdong', provinceMap)
    chart.setOption({
      series: [{
        map: 'guangdong',
        // ...其他配置
      }]
    })
  }
})

添加地图标记点

series: [
  // 地图系列...
  {
    type: 'effectScatter',
    coordinateSystem: 'geo',
    data: [
      { name: '北京', value: [116.46, 39.92, 100] },
      { name: '上海', value: [121.48, 31.22, 80] }
    ],
    symbolSize: val => val[2] / 10,
    showEffectOn: 'render',
    rippleEffect: {
      brushType: 'stroke'
    },
    label: {
      formatter: '{b}',
      position: 'right'
    }
  }
]

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

相关文章

vue实现主题

vue实现主题

Vue 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-co…

vue轮询实现

vue轮询实现

Vue 轮询实现方法 在 Vue 中实现轮询可以通过以下几种方式: 使用 setInterval data() { return { pollInterval: null }…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

自己实现vue

自己实现vue

实现简易版 Vue.js 核心功能 要实现一个简易版 Vue.js,需要理解其核心功能:数据响应式、模板编译、依赖收集和虚拟 DOM。以下分模块实现关键功能。 数据响应式(Reactivity) 通…

vue原生实现

vue原生实现

Vue 原生实现方法 在 Vue 中实现原生功能通常指直接使用 Vue 的核心特性(如指令、响应式数据、组件等)而非依赖第三方库。以下是几种常见场景的原生实现方式: 数据绑定与响应式更新 Vue 的…

vue搜索功能实现

vue搜索功能实现

Vue搜索功能实现方法 在Vue中实现搜索功能可以通过多种方式完成,以下是几种常见的方法: 使用计算属性实现搜索 计算属性非常适合处理需要根据输入值动态过滤数据的情况。创建一个计算属性,根据搜索关键…