vue引入echarts的3D地球

背景

最近在引入echarts的各种图表,比如3D地球


image.png

开始

//首先引入三个包
import echarts from 'echarts';
import 'echarts-gl';
import world from 'echarts/map/js/world.js';

初始化地图

 initMap(config) {
      const vm = this;
      const canvas = document.createElement('canvas');
      this.mapChart = echarts.init(canvas, null, {
        width: 4096,
        height: 2048,
      });
      this.mapChart.setOption(
        {
          backgroundColor: config.map.bgColor, // 背景色
          geo: {
            z: 1,
            type: 'map',
            map: 'world',
            top: 0,
            left: 0, // 绘制完整尺寸的 echarts 实例
            right: 0,
            bottom: 0,
            boundingCoords: [[-180, 90], [180, -90]], // 设置为一张完整经纬度的世界地图
            nameMap: {
              China: '中国', // 变成中文
            },
            label: {
              show: config.map.textLabel.isTextLabel, // 是否显示文本
              color: config.map.textLabel.textColor, // 文本颜色
            },
            itemStyle: {
              // 地图区域的多边形 图形样式。 默认样试。
              normal: {
                color: {
                  type: 'linear',
                  x: 100,
                  y: 12,
                  x2: 12,
                  y2: 100,
                  colorStops: [
                    {
                      offset: 0,
                      color: config.map.area.areaColor[0], // 0% 处的颜色
                    },
                    {
                      offset: 1,
                      color: config.map.area.areaColor[1], // 100% 处的颜色
                    },
                  ],
                  global: config.map.area.isGlobal, // 缺省为 false
                },
                borderColor: config.map.area.borderColor, // 边框线
                borderWidth: config.map.area.borderWidth * common.getFontSize(), // 线宽
                borderType: config.map.area.borderType, // 支持 'solid', 'dashed', 'dotted'。
                shadowColor: config.map.area.shadowColor[0], // 阴影颜色
                shadowBlur: config.map.area.shadowBlur * common.getFontSize(), // 模糊大小
                shadowOffsetX:
                  config.map.area.shadowOffsetX * common.getFontSize(), // 水平偏移
                shadowOffsetY:
                  config.map.area.shadowOffsetY * common.getFontSize(), // 垂直偏移
              },
            },
            emphasis: {
              // 高亮状态下的多边形和标签样式。
              label: {
                // 文本
                show: config.map.textLabel.isTextLabel,
                color: config.map.textLabel.emphasizeColor,
              },
              itemStyle: {
                // 区域
                areaColor: config.map.area.emphasizeAreaColor,
              },
            },
            regions: [
              {
                name: '中国',
                itemStyle: {
                  normal: {
                    // areaColor: config.map.area.chinaColor,
                  },
                },
              },
            ], // 区域块的颜色
          },
        },
        true
      );
    },

初始化地球

    // 初始化地球
    initChart() {
      const vm = this;
      vm.chart = echarts.init(document.getElementById(vm.dataInfo.id));
      const data = vm.resetData(vm.dataInfo.data.graphData.series[0].data);
      const { unit } = vm.dataInfo.data.graphData.otherData || '';
      const config = vm.getEarthConfig();
      vm.initMap(config);
      const bgImg = config.earth.bgImg || '';
      // 地球
      const option = {
        backgroundColor: '',
        globe: {
          roam: false, // 是否允许鼠标滚动放大,缩小
          baseTexture: this.mapChart,
          environment: bgImg == '' ? '' : require(`../../../${bgImg}`),
          shading: config.earth.shading, // 地球中三维图形的着色效果,通过经典的 lambert 着色表现光照带来的明
          light: {
            ambient: {// 环境光
              color: config.earth.enLightColor, // 颜色
              intensity: config.earth.enIntensity, // 光的强度
            },
            main: {
              // 太阳光
              color: config.earth.lightColor, // 颜色
              intensity: config.earth.intensity, // 主光源的强度
              shadow: false,
            },
          },
          postEffect: {// 后处理特效的相关配置
            enable: true,
            bloom: {// 高光特效
              enable: true,
            },
            depthOfField: {// 景深效果
              enable: false,
            },
          },
          viewControl: {
            autoRotate: config.earth.isAutoRotate, // 自动旋转关闭
            autoRotateSpeed: config.earth.autoRotateSpeed,
            targetCoord: [100.46, 39.92], // 定位到中国
            zoomSensitivity: config.earth.isZoom == true ? 1 : 0, // 是否可缩放
          },
        },
        series: vm.rebuildSeriesData(data, config, unit),
      };
      vm.chart.setOption(option, true);
      // 点击事件
      this.mapChart.on('click', params => {});
      this.chart.on('click', params => {});
    },

注意点

多看看官网

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • 官网奉上ECharts vue项目中可以引入echarts或者vue echarts,大致区别如下: echart...
    球_97阅读 24,070评论 2 12
  • 初识Echarts: Echarts--商业级数据图表:商业级数据图表,它是一个纯JavaScript的图标库,兼...
    周末不敲键盘阅读 1,196评论 0 0
  • 突然间有点理解生老病死 有生就一定有死 病死,老死 是死的一面 病和死离得近 所以生了病会死的比老要快 老是慢慢地...
    黎色_ea73阅读 112评论 0 1
  • 文:西岭初见|A-8/15 又是新学期的开始,这几天我又开始进入到焦虑状态。其实说实在的,作为一名教师,在放假的时...
    西岭初见阅读 605评论 0 0
  • 蚕在自己的生活中织下了一个厚厚的茧。那是痛苦的丝织成的。 蚕织茧变蛹,又破茧化蝶的艰辛的生命历程。它把一切都贡献给...
    我行我素hua阅读 2,722评论 4 7