vue echarts绘制旋转 攻击线 3D地球

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue echarts绘制旋转 攻击线 3D地球相关的知识,希望对你有一定的参考价值。

参考技术A npm install --save echarts echarts-gl

因为本次渲染需要用到echarts-gl ,所以一起安装了

baseTexture可以设置为上面定义canvas,也可以是图片,这里添加的是世界地图,以便后续功能的拓展

Vue Echarts绘制世界地图

1.绘制世界地图如下:


2,开始绘制地图

//安装Echarts
npm install echarts --save


3.在Main.js中引入word.js世界地图

import '../node_modules/echarts/map/js/world.js' // 引入世界地图

如果安装echarts之后没有node_modules/echarts/map文件夹

点击下载:

map文件打包下载
(访问密码:5719)


4.在组件中绘制地图

<template>
  <div class='wrapper'>
    <div class='chart' id='chart'></div>
  </div>
</template>
 
<script>
    import axios from 'axios'
    import echarts from 'echarts'
    export default {
      data () {
        return {}
      },
      props:{
        msg:{
          type:Object,
          default:() => {}
        }
      },
      watch:{
        msg:{
          deep: true,
          handler(val) {
            this.getWorld(val)
          }
        }
      },
      mounted () {
        this.getWorld(this.msg)
      },
      methods: {
        getWorld (data) {
          var that = this
          axios.get('src/api/world.json').then(function (res) {
            let namemap = res.data.namemap
            // let dataArr = res.data.dataArr
            let dataArr = data.data
            that.drawChart(namemap, dataArr)
          })
        },
        drawChart (name, data) {
          // 基于准备好的dom,初始化echarts实例
          let chart = echarts.init(document.getElementById('chart'))
          // 监听屏幕变化自动缩放图表
          window.addEventListener('resize', function () {
            chart.resize()
          })
          // 绘制图表
          chart.setOption({
            // 图表主标题
            // title: {
            //   text: '世界地图', // 主标题文本,支持使用 \\n 换行
            //   top: 10, // 定位 值: 'top', 'middle', 'bottom' 也可以是具体的值或者百分比
            //   left: 'center', // 值: 'left', 'center', 'right' 同上
            //   textStyle: { // 文本样式
            //     fontSize: 24,
            //     fontWeight: 600,
            //     color: '#000'
            //   }
            // },
            grid: {
              width:'100%',
              height:'100%',
                left: '0%',
                right: '0%',
                bottom: '0%',
                containLabel: true
            },
            // 提示框组件
            tooltip: {
              trigger: 'item', // 触发类型, 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用
              // 提示框浮层内容格式器,支持字符串模板和回调函数两种形式
              // 使用函数模板  传入的数据值 -> value: number | Array
              formatter: function (val) {
                if(val.data == null) return ;
                return val.data.name + ': ' + val.data.value
              }
            },
            // 视觉映射组件
            visualMap: {
              min: 0,
              max: 10000,
              text:['max','min'],
              realtime: false,
              calculable: true,
              color: ['#0064d0','#c3e0ff'],
            },
            series: [
              {
                type: 'map', // 类型
                // 系列名称,用于tooltip的显示,legend 的图例筛选 在 setOption 更新数据和配置项时用于指定对应的系列
                name: '世界地图',
                mapType: 'world', // 地图类型
                // 是否开启鼠标缩放和平移漫游 默认不开启 如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move' 设置成 true 为都开启
                roam: true,
                // 图形上的文本标签
                label: {
                  show: false // 是否显示对应地名
                },
                zoom: 1.2,
                // 地图区域的多边形 图形样式
                itemStyle: {
                  // areaColor: '#7B68EE', // 地图区域的颜色 如果设置了visualMap,areaColor属性将不起作用
                  borderWidth: 0.5, // 描边线宽 为 0 时无描边
                  borderColor: '#000', // 图形的描边颜色 支持的颜色格式同 color,不支持回调函数
                  borderType: 'solid' // 描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'
                },
                // 高亮状态下的多边形和标签样式
                emphasis: {
                  label: {
                    show: true, // 是否显示标签
                    color: '#fff' // 文字的颜色 如果设置为 'auto',则为视觉映射得到的颜色,如系列色
                  },
                  itemStyle: {
                    areaColor: '#FF6347' // 地图区域的颜色
                  }
                },
                // 自定义地区的名称映射
                nameMap: name,
                // 地图系列中的数据内容数组 数组项可以为单个数值
                data: data
              }
            ]
          })
        }
      }
    }
</script>
<style scoped>
  .wrapper {
    width: 100%;
  }
  .wrapper .chart {
    width: 80%;
    margin:0 auto;
    height: 600px;
    border: 1px solid #eeeeee;
    /* background: url(../../public/static/bg.png) no-repeat; 背景图设置*/ 
    background-size: 100% 100%;
  }
</style>


5.world.json文件如下:

echarts官方的世界地图json文件,现在失效了

http://echarts.baidu.com/asset/map/json/world.json

找了很久才找到:

word.json
(访问密码:5719)

 

以上是关于vue echarts绘制旋转 攻击线 3D地球的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你做出数据可视化项目3D地球旋转

手把手教你做出数据可视化项目3D地球旋转

用 Lunchbox 在 vue3 中创建一个旋转的 3D 地球竟是如此简单

Three.js地球开发—3D经纬度等比地图,3D飞行航线最终效果

Three.js地球开发—3D经纬度等比地图,3D飞行航线最终效果

请教一个关于echarts地图扩展实例的问题,不甚感激