Echarts实践-实现3D地球

摘要:
我昨天被拉进了一个项目组,我将与Echarts相关的一些任务联系。老实说,在此之前,Echarts Js已经被使用过,但它很少见,也很肤浅。我会学习并做好准备。因为没有实际数据,我将使用所有模拟数据。首先,我创建了一个关于编码的新项目,然后初始化项目vueinitwebpack……这些跳过。该项目引入了cnpminstallcharts--save;cnpminstallcharts gl—保存;主要是。js,配置importechartsfrom'charts'import'charts-gl'Vue。原型$echarts=echarts echarts是在js中引入并在全球注册的,因此不需要再次导入以下页面,这在需要时直接调用。我举了几个例子,今后我将继续增加。

昨天被拉进一个项目组,会接触一些与Echarts的相关任务,讲实话,在此之前echarts.js有使用过,但是很少,很浅,那我就且学且准备。
因为没有实际数据 所以我就全部使用模拟数据,我先在coding上新建一个项目,然后项目初始化,vue init webpack ... 这些跳过。项目引入cnpm install echarts --save;
cnpm install echarts-gl --save;

在main.js配置

import echarts from 'echarts'
import 'echarts-gl'
Vue.prototype.$echarts = echarts

我再main.js中引入了echarts,并全局注册,所以以下页面就不需要再次引入,要用的时候直接调用this.$echarts这个对象

 

开始说echarts相关的,我做了几个例子 我后期还会继续往上增加。先来几张效果图:

1.中国地图简单飞行线路
Echarts实践-实现3D地球第1张

2.3d地球攻击线 (给地球加了个皮肤 就是好看一些)

Echarts实践-实现3D地球第2张

 3.3d地球 攻击线2
Echarts实践-实现3D地球第3张

使用echarts需要注意的是在对应页面要引入

世界地图:import world from 'echarts/map/js/world.js'
中国地图:import china from 'echarts/map/js/china.js'
 
这里贴一份源码3d地球攻击线源码:
<template>
  <!-- 例子6 -->
  <div>
    <div
      class="earthmap"
      id="chart_example6"
      style="1500px;height:1221px;"
    >
    </div>
  </div>
</template>

<script>
import $ from 'jquery'
import world from 'echarts/map/js/world.js'
import china from 'echarts/map/js/china.js'

export default {
  data() {
    return {}
  },
  mounted() {
    this.initData()
  },
  methods: {
    // 绘制图表
    initData() {
      //初始化canvas节点
      let myChart = this.$echarts.init(
        document.getElementById('chart_example6')
      )
      //随机获取点点坐标函数
      let rodamData = function() {
        let name = '随机点' + Math.random().toFixed(5) * 100000
        // 终点经度
        let longitude = 105.18
        // 终点纬度
        let latitude = 37.51
        // 起点经度
        let longitude2 = Math.random() * 360 - 180
        // 起点纬度
        let latitude2 = Math.random() * 180 - 90
        return {
          coords: [
            [longitude2, latitude2],
            [longitude, latitude]
          ],
          value: (Math.random() * 3000).toFixed(2)
        }
      }
      // 使用世界地图生成地球皮肤
      let canvas = document.createElement('canvas')
      let myChart2 = this.$echarts.init(canvas, null, {
         4096,
        height: 2048
      })
      myChart2.setOption({
        backgroundColor: 'rgba(3,28,72,0.3)',
        title: {
          show: true
        },
        geo: {
          type: 'map',
          map: 'world',
          left: 0,
          top: 0,
          right: 0,
          bottom: 0,
          boundingCoords: [
            [-180, 90],
            [180, -90]
          ],
          zoom: 0,
          roam: false,
          itemStyle: {
            borderColor: '#000d2d',
            normal: {
              areaColor: '#2455ad',
              borderColor: '#000c2d'
            },
            emphasis: {
              areaColor: '#357cf8'
            }
          },
          label: {
            fontSize: 24
          }
        },
        series: []
      })
      //echarts配置
      let option = {
        backgroundColor: '#013954',
        title: {
          text: '3D地球攻击线',
          subtext: '随机模拟数据',
          x: 'center',
          y: 100,
          textStyle: {
            color: '#fff',
            fontSize: 25
          }
        },
        tooltip: {
          trigger: 'item'
        },
        legend: {
          orient: 'vertical',
          top: 'bottom',
          left: 'right',
          data: ['北京 Top10', '上海 Top10', '广州 Top10'],
          textStyle: {
            color: '#fff'
          },
          selectedMode: 'single'
        },
        globe: {
          baseTexture: myChart2,
          environment: this.$echarts.graphic.LinearGradient(
            0,
            1,
            1,
            1,
            [
              {
                offset: 0,
                color: '#000000' // 天空颜色
              },
              {
                offset: 0,
                color: '#000000' // 地面颜色
              },
              {
                offset: 0,
                color: '#000000' // 地面颜色
              }
            ],
            true
          ),
          // shading: 'lambert',
          light: {
            // 光照阴影
            main: {
              color: '#fff', // 光照颜色
              intensity: 1.2, // 光照强度
              // shadowQuality: 'high', //阴影亮度
              shadow: false, // 是否显示阴影
              alpha: 40,
              beta: -30
            },
            ambient: {
              intensity: 0.5
            }
          },
          viewControl: {
            alpha: 30,
            beta: 160,
            // targetCoord: [116.46, 39.92],
            autoRotate: true,
            autoRotateAfterStill: 10,
            distance: 240
          }
        },
        series: [
          {
            name: 'lines3D',
            type: 'lines3D',
            coordinateSystem: 'globe',
            effect: {
              show: true
            },
            blendMode: 'lighter',
            lineStyle: {
               2
            },
            data: [],
            silent: false
          }
        ]
      }
      // 随机数据 i控制线数量
      for (let i = 0; i < 200; i++) {
        option.series[0].data = option.series[0].data.concat(rodamData())
      }
      //画图
      myChart.setOption(option)
      window.addEventListener('resize', function() {
        myChart.resize()
      })
    }
  },
  watch: {},
  created() {}
}
</script>
 
以上代码仅供参考,看了echarts官方和w3c的echarts教程慢慢了解很多配置熟悉;
感兴趣可以看看;
如果你也是初学echarts又有兴趣加入我的项目例子 联系我 我拉你进项目组,我们共同进步;
 
 
 
 
 

免责声明:文章转载自《Echarts实践-实现3D地球》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQLServer之视图篇传奇衣服、翅膀、武器、怪物、NPC等外观代码计算方法与公式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

微信小程序 View:flex 布局

微信小程序View支持两种布局方式:Block和Flex所有View默认都是block要使用flex布局的话需要显式的声明:display:flex;下面就来介绍下微信小程序的Flex布局先做一个简单的demo123加上背景色能看的更清楚些.main{width:100%;background-color:antiquewhite;}.item{height...

使用jsPlumb插件实现动态连线功能

jsPlumb是一个强大的JavaScript连线库,它可以将html中的元素用箭头、曲线、直线等连接起来,适用于开发Web上的图表、建模工具等,其实jsPlumb可能主要是用来做流程图的,它在实现这方面的功能上非常强大,我在项目中只使用了它少部分功能,来实现项目中连线的效果。...

如何在jenkins上新建一个项目及其简单配置

单击[新建]进入选择页面,您可以在此页面上配置项目(包括拉取源代码、修改连续构建时间以及在打包和部署之前修改配置文件)3。在General中,您可以设置要构建的版本,如下图5所示。在源代码管理模块中,您可以设置源代码地址(我们公司常用的Git)6。如果是自动构建,您可以将自动构建时间(即构建频率)设置为7。以下是构建中的一些设置。您可以使用shell修改源代...

Cesium快速上手10-Viewer Entities组合

src=Box.html&label=Geometriesimage.pngbox就是立方体cylinder是圆锥圆柱varviewer=newCesium.Viewer;varblueBox=viewer.entities.add;varredBox=viewer.entities.add;varoutlineOnly=viewer.entitie...

js Base64与字符串互转

1、base64加密在页面中引入base64.js文件,调用方法为:˂!...

C# 没落了吗?

首先,这个数字--------------------------------------------C#是否正在衰落与微软的整个平台密切相关。近年来,使用C#的人越来越少,这也是因为越来越少的人专门为Microsoft平台开发产品。现在是移动时代,微软基本上错过了互联网和移动互联网这两波浪潮。现在生活不容易。在软件工程中,人们常说“唯一不变的就是改变本身”...