当前位置:   article > 正文

Echarts 3d地球实现(Vue框架)_echarts 地球

echarts 地球

最近迷上了echarts实现数据可视化了,也确实因为工作需要,目前公司需要我们来在自己的新厂房展厅把自己的产品展示出来,我所在研发部软件组,第一个想到的就是使用echarts来实现一个数据可视化的大屏了,下面就带着大家看看我这段时间使用Echarts来实现一个3D地球的过程:

1.环境准备工作

准备一个Vue的工程项目,然后导入两个配置echarts 和 echarts-gl 并引用到项目工程之中:

  1. npm install echarts
  2. npm install echarts-gl

2.编写代码

echarts 使用起来还是很方便的,结合echarts 官网给出的配置手册可以轻松完成数据可视化的配置工作,这边给出我的代码和实现效果,大家如果有什么不懂的可以评论在下面,看到会回复的。

  1. <template>
  2. <div>
  3. <h1>这是3D地球的渲染界面</h1>
  4. <div class="myworld" ref="myworld"></div>
  5. </div>
  6. </template>
  7. <script>
  8. // 引入世界地球的json文件!
  9. import worldJson from '../../../src/static/others/json/world.json'
  10. // 引入世界地图的图片
  11. import earthjpg from '../../../src/static/img/earth.jpeg'
  12. export default {
  13. data() {
  14. return {
  15. }
  16. },
  17. methods: {
  18. },
  19. mounted() {
  20. // 基于准备好的dom,初始化echarts实例
  21. var world = this.$echarts.init(this.$refs.myworld);
  22. // 指定图标的配置项和数据
  23. this.$echarts.registerMap("world", worldJson);
  24. // 使用 echarts 绘制世界地图的实例作为纹理
  25. var canvas = document.createElement('canvas');
  26. var mapChart = this.$echarts.init(canvas, null, {
  27. width: 4096, height: 2048
  28. });
  29. mapChart.setOption({
  30. series: [
  31. {
  32. type: 'map',
  33. map: 'world',
  34. // 绘制完整尺寸的 echarts 实例
  35. top: 0, left: 0,
  36. right: 0, bottom: 0,
  37. boundingCoords: [[-180, 90], [180, -90]]
  38. }
  39. ]
  40. });
  41. // 设置配置项
  42. let optionWorld = {
  43. // backgroundColor: "#013954",
  44. globe: {
  45. // 是否显示地球组件:值为布尔类型,默认就是true
  46. // show: true,
  47. // 内半径 地球的内半径
  48. globeRadius: 120,
  49. // 外半径
  50. globeOuterRadius: 130,
  51. // 配置背景颜色!
  52. environment: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  53. offset: 0, color: '#00aaff' // 天空颜色
  54. }, {
  55. offset: 0.7, color: '#998866' // 地面颜色
  56. }, {
  57. offset: 1, color: '#998866' // 地面颜色
  58. }], false),
  59. // 地球的纹理,支持图片路径的字符串,图片或者canvas的对象,如果不设置这个,地球出不来
  60. // baseTexture: earthjpg,
  61. // 也支持直接使用echarts的实例来作为纹理此时在地球上的鼠标动作会跟纹理上使用的echarts实例有联动!
  62. baseTexture: mapChart,
  63. // 地球三维图形的着色效果
  64. shading: "color",
  65. colorMaterial :{
  66. detailTexture : earthjpg
  67. },
  68. // 用于鼠标的旋转、缩放等控制视角
  69. viewControl: {
  70. // 透视投影
  71. projection: 'perspective',
  72. alpha: 30,
  73. beta: 160,
  74. // 开启球体自旋转
  75. autoRotate: true,
  76. // 设置地球的自转速度: 单位为 度/秒,默认值为10,也就是36秒转一圈!
  77. autoRotateSpeed: 20,
  78. // 在鼠标停止操纵后,球体恢复自转的事件
  79. autoRotateAfterStill: 2,
  80. // 默认视角距离主体的距离
  81. distance: 240
  82. }
  83. },
  84. series: [
  85. // 尝试一下,实现3d的飞线效果
  86. {
  87. type: 'lines3D',
  88. coordinateSystem: 'globe',
  89. globeIndex: 0,
  90. // polyline: true,
  91. effect: {
  92. show: true,
  93. period: 1,
  94. trailWidth: 10
  95. },
  96. lineStyle: {
  97. color: 'blue',
  98. width: 2,
  99. opacity: 0.5,
  100. },
  101. data: [
  102. [
  103. [114.519696, 36.680402, 10],
  104. [-47.231034, -13.283588, 20]
  105. ],
  106. [
  107. [114.519696, 36.680402, 10],
  108. [-77.051902,38.920496, 20]
  109. ],
  110. [
  111. [114.519696, 36.680402, 10],
  112. [174.744397,-41.228444, 20]
  113. ],
  114. [
  115. [-155.578464,19.896262,20],
  116. [114.519696, 36.680402, 10]
  117. ],
  118. [
  119. [77.080047,28.775878,20],
  120. [-75.702,45.444995, 20]
  121. ],
  122. [
  123. [28.088045,-25.518807,20],
  124. [-149.861504,61.220877,30]
  125. ]
  126. ]
  127. }
  128. ],
  129. }
  130. world.clear()
  131. world.setOption(optionWorld, true);
  132. }
  133. }
  134. </script>
  135. <style>
  136. .myworld {
  137. width: 600px;
  138. height: 600px;
  139. }
  140. </style>

3.效果展示和总结:

 使用到的地求图片:

额外附上友情链接: Echarts官网: https://echarts.apache.org/zh/index.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/633116
推荐阅读
相关标签
  

闽ICP备14008679号