vue+echarts5实现中国地图的示例代码

使用echarts5.0版本实现中国地图,E charts在5.0版本之后,地图不能直接引入了,需要自己去下载。

地图文件下载地址:
下载地址
(http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.772340792178525&lng=103.94573258937584&zoom=9.5)

注意: 将下载后的json文件放置/public目录下

map类型的地图

<template>
    <div>
        <div ref="mapEcharts" class="map-echart"></div>
    </div>

</template>

<script>
import * as echarts from 'echarts'
import axios from 'axios'

export default {
  name: "Map",
  data() {
    return {
      timer: null,
      seriesData: [
        {name: '天津市', value: 20057.34},
        {name: '北京市', value: 15477.48},
        {name: '上海市', value: 31686.1},
        {name: '河北省', value: 6992.6},
        {name: '山东省', value: 44045.49},
        {name: '山西省', value: 4045.49},
      ],
      map: null
    }

  },
  created() {

  },
  mounted(){
      this.initMapEcharts();
  },
  methods: {
    initMapEcharts() {
      // 获取地图数据
      // 将下载后的json文件放置/public目录下
      axios.get('/china.json').then(res => {
          console.log(res);
         // 使用数据注册地图
         echarts.registerMap('china', res.data)
          this.$nextTick(() => {
            // 初始化地图
            this.map = echarts.init(this.$refs['mapEcharts'])
            // 设置基础配置项
            const option = {
              // 标题
              title: {
                text:"中国地图",
                left: 'center',
                subtext: "下载链接",
                sublink: "http://datav.aliyun.com/tools/atlas/#&lat=30.772340792178525&lng=103.94573258937584&zoom=9.5"
              },
              // 悬浮窗
              tooltip: {
                trigger: 'item',
                formatter: function(params) {
                  return `${params.name}: ${params.value || 0}`

                }
              },
              // 图例
              visualMap: {
                min: 800,
                max: 50000,
                text: ['High', 'Low'],
                realtime: false,
                calculable: true,
                inRange: {
                    color: ['lightskyblue', 'yellow', 'orangered']
                }
              },
              // 要显示的散点数据
              series: [
                {
                  type: 'map',
                  map: 'china',
                  // 这是要显示的数据
                  data: this.seriesData,
                  // 自定义命名映射,不设置的话,label默认是使用 geoJson中的name名
                  nameMap: {
                    '北京市': "北京重命名",
                    "天津市": '天津重命名'
                  },
                },

              ]
            }
            // 将配置应用到地图上
            this.map.setOption(option)
            // 设置定时器,自动循环触发tooltip悬浮窗事件
            this.setTimer()
            let that = this;
            // 当鼠标在地图上时,停止自动tooltip事件
            this.map.on('mouseover', {series: 0,}, function(params) {
              that.clearTimer()
            })
            // 当鼠标移出地图后,再自动tooltip
            this.map.on('mouseout', {series: 0}, function(params) {
              that.setTimer()
            })
          })
      })
    },
    setTimer() {
      // 当前选中区域的下标
      let curIndex = -1;
      this.timer && clearInterval(this.timer)
      this.timer = setInterval(() => {
        const len = this.seriesData.length;
        // dispatchAction是主动去触发echarts事件,取消高亮当前的数据图形
        this.map.dispatchAction({
          type: 'downplay',
          seriesIndex: 0,
          dataIndex: curIndex
        })
        // 下一个选中区域的下标
        curIndex = (curIndex + 1) % len;
        // 高亮下一个数据图形
        this.map.dispatchAction({
          type: 'highlight',
          seriesIndex: 0,
          dataIndex: curIndex
        })
        // 显示tooltip
        this.map.dispatchAction({
          type: 'showTip',
          seriesIndex:0,
          dataIndex: curIndex
        })
      }, 1000)
    },
    clearTimer() {
      this.timer && clearInterval(this.timer)
    },
  },

  beforeDestroy() {
    this.clearTimer()
  }
}
</script>

<style>
.map-echart {
  height: 900px;
  width: 900px;
}
</style>

geo类型地图

<template>
    <div>
        <div ref="geoEcharts" class="geo-echart"></div>
    </div>

</template>

<script>
import * as echarts from 'echarts'
import axios from 'axios'
import { color } from 'echarts'

export default {
  name: "Geo",
  data() {
    return {
      timer: null,
      seriesData: [
        {name: '天津市', value: 20057.34},
        {name: '北京市', value: 15477.48},
        {name: '上海市', value: 31686.1},
        {name: '河北省', value: 6992.6},
        {name: '山东省', value: 44045.49},
        {name: '山西省', value: 4045.49},
      ],
      map: null
    }

  },
  created() {

  },
  mounted(){
      this.initGeoEcharts();
  },
  methods: {
    initGeoEcharts() {
      axios.get('/china.json').then(res => {
         echarts.registerMap('china', res.data)
          this.$nextTick(() => {
            const map = echarts.init(this.$refs['geoEcharts'], null, {renderer:'svg'})
            const option = {
              title: {
                text:"中国地图",
                left: 'center',
                subtext: "下载链接",
                sublink: "http://datav.aliyun.com/tools/atlas/#&lat=30.772340792178525&lng=103.94573258937584&zoom=9.5"
              },
              // 悬浮窗
              tooltip: {
                trigger: 'item',
                formatter: function(params) {
                  console.log(2222, params);
                  return `${params.name}: ${params.value || 0}`

                }
              },
              // 图例
              visualMap: {
                min: 800,
                max: 50000,
                text: ['High', 'Low'],
                realtime: false,
                calculable: true,
                inRange: {
                    color: ['lightskyblue', 'yellow', 'orangered']
                }
              },
              geo: {
                map: 'china',
                zoom: 1,
                roam: 'move',
                nameMap: {
                  '新疆维吾尔自治区': "新疆",
                  "西藏自治区": '西藏',
                  "甘肃省": "甘肃",
                  "宁夏回族自治区": "宁夏",
                  "广西壮族自治区": "广西",
                  "内蒙古自治区": "内蒙古",
                  "香港特别行政区": "香港",
                  "澳门特别行政区": "澳门"
                },
                label: {
                  show: true,
                  color: 'black',
                  position: "inside",
                  distance: 0,
                  fontSize: 10,
                  rotate:45
                },
                // 所有地图的区域颜色
                itemStyle: {
                  areaColor: 'rgba(0,60,153,0.8)',
                  borderColor: '#02c0ff'
                },
                emphasis: {
                  itemStyle: {
                    areaColor: 'rgba(0,60,153,0.5)',
                    shadowColor: 'rgba(0,0,0,0.8)',
                    shadowBlur: 5,
                    shadowOffsetY: 5
                  }
                },
                // 针对某些区域做一些特别的样式
                // regions: [{
                //   name: '广东省',
                //   itemStyle: {
                //     areaColor: 'yellow',
                //     color: 'black',
                //     borderColor: 'pink'
                //   }
                // }]
              },
              // 数据
              series: [
                {
                  type: 'scatter',
                  coordinateSystem: 'geo',
            	  data: [
                    {name: '江苏省', value:[120.15, 31.99, 9]}, // 值为,经纬度,数据
                    {name: '湖北省', value: [111, 31.89, 15477]},
                    {name: '四川省', value: [102.15, 31.89, 31686]},
                    {name: '浙江省', value: [120.15, 29.89, 6992]},
                    {name: '山东省', value: [118.15, 36.9, 44045]}
                  ],
                  SymbolSize: 4
                },
                {
                  type: 'lines',
                  coordinateSystem: 'geo',
                  data: [
                    {coords: [[121.15,38], [111, 31.89], [100.15, 31.89],[121.15, 29.89], [105.15, 30.89]]}
                  ],
                  polyline: true, // 是否是多段线
                  lineStyle: {
                    color: {
                      type: 'radial',
                      x: 0.5,
                      y: 0.5,
                      r: 0.5,
                      colorStops: [{
                          offset: 0, color: 'red' // 0% 处的颜色
                      }, {
                          offset: 1, color: 'blue' // 100% 处的颜色
                      }],
                      global: false, // 缺省为 false
                      shadowColor: 'rgba(0, 0, 0, 0.5)',
                      shadowBlur: 10,
                      curveness: 1
                    },
                    opacity: 0.3,
                    width: 2,
                  },
                  // 线特效的配置
                  effect: {
                    show: true,
                    period: 5, // 特效动画的时间,单位为 s
                    trailLength: 1, //特效尾迹长度[0,1]值越大,尾迹越长重
                    // symbol: 'image://' + require('@/echartsMap/money.png'), // 自定义动画图标
                    symbolSize: 15, //图标大小
                    color:"red"
                  }
                }

              ]
            }
            map.setOption(option)
          })
      })
    }
  },
}
</script>

<style>
.geo-echart{
  height: 900px;
  width: 900px;
}
</style>

到此这篇关于vue+echarts5实现中国地图的示例代码的文章就介绍到这了,更多相关vue echarts5中国地图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue+vuex+axios+echarts画一个动态更新的中国地图的方法

    本文介绍了vue+vuex+axios+echarts画一个动态更新的中国地图的方法,分享给大家,具体如下: 一. 生成项目及安装插件 # 安装vue-cli npm install vue-cli -g # 初始化项目 vue init webpack china-map # 切到目录下 cd china-map # 安装项目依赖 npm install # 安装 vuex npm install vuex --save # 安装 axios npm install axios --save

  • vue+echarts实现中国地图流动效果(步骤详解)

    @vue+echarts实现中国地图流动效果 #话不多说看效果图 操作步骤: 执行命令:npm run echarts -s 并回车 看到这样的提示代表安装成功 PS:网络不好的情况建议用cnpm淘宝镜像(全局终端执行命令:npm i -g cnpm --registry=https://registry.npm.taobao.org) 下载china.js 链接: https://pan.baidu.com/s/1EODVh9tJNEbFebbrhKyd_Q 提取码: gjz4 引入 impo

  • Vue+ECharts实现中国地图的绘制及各省份自动轮播高亮显示

    目录 实现效果 完整代码+详细注释 要点小结 实现效果 完整代码+详细注释 <template> <div class="echart"> <div class="content"> <div id="map_cn"></div> </div> </div> </template> <script> import echarts from

  • vue中echarts引入中国地图的案例

    如下所示: <div id="myChartChina" :style="{width: '100%', height: '500px'}"></div> mounted() { this.drawLine(); }, drawLine(){ // 基于准备好的dom,初始化echarts实例 var myChartContainer = document.getElementById('myChartChina'); var resizeM

  • vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能

    随着前端技术的飞速发展,大数据时代的来临,我们在开发项目时越来越多的客户会要求我们做一个数据展示的大屏,可以直观的展示用户想要的数据,同时炫酷的界面也会深受客户的喜欢. 大屏展示其实就是一堆的图表能够让人一目了然地看到该系统下的一些基本数据信息的汇总,也会有一些实时数据刷新,信息预警之类的.笔者在之前也做过一些大屏类的数据展示,但是由于都是一些图表类的,觉得没什么可说的,加之数据也都牵扯到公司,所以没有沉淀下来什么. 最近有朋友要做一个大屏,问了自己一个问题,自己也刚好做了一个简单的大屏数据展示

  • vue+echarts5实现中国地图的示例代码

    使用echarts5.0版本实现中国地图,E charts在5.0版本之后,地图不能直接引入了,需要自己去下载. 地图文件下载地址:下载地址(http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.772340792178525&lng=103.94573258937584&zoom=9.5) 注意: 将下载后的json文件放置/public目录下 map类型的地图 <template> <

  • Vue echarts 实现离线中国地图的示例代码(细化到省份)

    目录 一.效果 二.完整代码 三.一些配置说明 1. 颜色配置 2. 省份点击事件 四.关于地图中的 china.js 细节修改 Vue echarts 实现离线中国地图,细化到省份 更新于 2022/09/22 找了好几个,没一个靠谱的,不是少了 china.js 就是其它原因不能运行. 一.效果 二.完整代码 展示这个地图只需要 Vue 环境中 已安装好 echarts china.js(在下面) 这个地图的 vue 源文件(在下面) 关于一些修改说明放到了第三条,如果你需要修改地图颜色等,

  • 使用D3.js创建物流地图的示例代码

    本文介绍了使用D3.js创建物流地图的示例代码,分享给大家,具体如下: 示例图 制作思路 需要绘制一张中国地图,做为背景. 需要主要城市的经纬坐标,以绘制路张起点和终点. 接收到物流单的城市,绘制一个闪烁的标记. 已经有过物流单的目标城市,不再绘制路线. 每次新产生一笔物流单,都有一个标记沿路线移向目标的动画效果. 绘制结束后的数据,需要清理掉,以减少对浏览器的资源占用. 开始撸码 1.创建网页模板 加载D3JS,为了方便调试,直接下载d3.js文件在本地,实际使用的时候,可以换成加载路径.注意

  • vue语法之拼接字符串的示例代码

    本文介绍了vue语法之拼接字符串的示例代码,分享给大家,具体如下. 先来一行代码: <div class="swiper-slide" v-for="item in message"> <img v-bind:src="['xxx(需要拼接的字符串)'+item.picurl]" alt="" width="100%" height="245" /> </d

  • vue父子组件的嵌套的示例代码

    本文介绍了vue父子组件的嵌套的示例代码,分享给大家,具体如下: 组件的注册: 先创建一个构造器 var myComponent = Vue.extend({ template: '...' }) 用Vue.component注册,将构造器用作组件(例为全局组件) Vue.component('my-component' , myComponent) 注册局部组件: var Child = Vue.extend({ /* ... */ }) var Parent = Vue.extend({ t

  • 用ES6的class模仿Vue写一个双向绑定的示例代码

    本文介绍了用ES6的class模仿Vue写一个双向绑定的示例代码,分享给大家,具体如下: 最终效果如下: 构造器(constructor) 构造一个TinyVue对象,包含基本的el,data,methods class TinyVue{ constructor({el, data, methods}){ this.$data = data this.$el = document.querySelector(el) this.$methods = methods // 初始化 this._com

  • Vue 实现展开折叠效果的示例代码

    本文介绍了Vue 实现展开折叠效果的示例代码,分享给大家,具体如下: 效果如见: 1.html代码 <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>js文本段落展开和收拢效果</title> <script type="text/javasc

  • vue制作抓娃娃机的示例代码

    去年为联通制作双十一活动,做四个小游戏:'配对消消乐'.移动拼图.抓娃娃.倒计时. 现在先做来分享一下制作抓娃娃游戏时的经验 先上效果图 游戏规则:在指定时间内抓到上图四张卡片为挑战成功. 现在直接说游戏主要内容:娃娃滚动.爪子向下抓取.抓到卡片 废话不多说直接上代码!(此样式是根据需求而定) <!--布局样式--> <div class="game"> <!--爪子--> <div class="paw"> <

  • vue el-upload上传文件的示例代码

    话不多说 直接上代码 <el-upload :action="actionUrl" class="avatar-uploader" :multiple="false" name="files" ref="upload" :file-list="fileList" :on-preview="handlePreview" :on-success="hand

随机推荐