vue echarts 3D地球和世界地图的实现,并且显示不同国家的数据

这篇具有很好参考价值的文章主要介绍了vue echarts 3D地球和世界地图的实现,并且显示不同国家的数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本3D地球的实现

  import * as echarts from 'echarts'
  import 'echarts-gl'

  const chartDom = document.getElementById('earth')
  const myChart = echarts.init(chartDom)
  myChart.setOption({
      globe: {
        baseTexture: 'https://images-1308194867.cos.ap-beijing.myqcloud.com/images/home/world.jpg', //地球的纹理。支持图片路径的字符  串,图片或者 Canvas 的对象
        shading: 'lambert', //地球中三维图形的着色效果
        atmosphere: {
          show: true, //显示大气层
          offset: 8,
          color: '#13315E'
        },
        light: {
          ambient: {
            intensity: 0.8 //环境光源强度
          }, //环境光
          main: {
            intensity: 0.2 //光源强度
          }
        },
        viewControl: {
          autoRotate: true, // 是否开启视角绕物体的自动旋转查看
          autoRotateSpeed: 3, //物体自转的速度,单位为角度 / 秒,默认为10 ,也就是36秒转一圈。
          autoRotateAfterStill: 2, // 在鼠标静止操作后恢复自动旋转的时间间隔,默认 3s
          rotateSensitivity: 2, // 旋转操作的灵敏度,值越大越灵敏.设置为0后无法旋转。[1, 0]只能横向旋转.[0, 1]只能纵向旋转
          targetCoord: [116.46, 39.92], // 定位到北京
          maxDistance: 200,
          minDistance: 200
        }
      }
  })

别忘记给#earth元素设置宽高
效果如下图
vue 大屏地球要3d,vue.js,echarts,3d

世界地图的实现

  import * as echarts from 'echarts'
  import world from '@/assets/world.js'
  
  const myChart = echarts.init(document.getElementById('world'))
  echarts.registerMap('world', world)
  myChart.setOption({
      visualMap: {
        type: 'piecewise',
        show: false,
        pieces: [
          { gt: 300, color: '#FF4646', label: '极高风险' },
          { gt: 200, lte: 300, color: '#FF7500', label: '高风险' },
          { gt: 100, lte: 200, color: '#FFD300', label: '中风险' },
          { gte: 0, lte: 100, color: '#00D4FF', label: '低风险' },
          { value: -1, color: '#93B8F8', label: '未知' }
        ],
        outOfRange: {
          color: '#fff'
        }
      },
      tooltip: {
        trigger: 'item'
      },
      series: [
        {
          name: 'corsi',
          type: 'map',
          map: 'world',
          roam: true,
          itemStyle: {
            borderColor: '#aaa', //边界线颜色
            areaColor: '#93B8F8' //默认区域颜色
          },
          emphasis: {
            itemStyle: {
              show: true,
              areaColor: '#fff' //鼠标滑过区域颜色
            }
          },
          data: [
            { name: '美国', value: 34126.24 },
            { name: '日本', value: 7830.534 },
            { name: '菲律宾', value: 17150.76 },
            { name: '中国', value: 0 }
          ]
        }
      ]
    })

别忘记给#world元素设置宽高
其中注意点是world.js 下载地址
下载完成以后需要对其进行改变一下,原本是他是放在一个匿名自执行函数里面,直接在vue里面引用会报错,要把他变成 export 对象,代码片段实例

export default {
  type: 'FeatureCollection',
  crs: {
    type: 'name',
    properties: {
      name: 'urn:ogc:def:crs:OGC:1.3:CRS84'
    }
  },
  features: [
    {
      geometry: {
        type: 'Polygon',
        coordinates: [
          [
            [47.97822265625001, 7.9970703125],
            [46.97822265625001, 7.9970703125],
            [43.98378906250002, 9.008837890624989],
            [43.482519531250006, 9.379492187499991],
            [43.181640625, 9.879980468749991],
            [42.84160156250002, 10.203076171874997],
            [42.65644531250001, 10.6],
            [42.92275390625002, 10.999316406249989],
            [43.24599609375002, 11.499804687499989],
            [43.85273437500001, 10.784277343749991],
            [44.38652343750002, 10.430224609374989],
            [44.94296875, 10.43671875],
            [45.81669921875002, 10.835888671874997],
            [46.565039062500006, 10.745996093749994],
            [47.40498046875001, 11.174023437499997],
            ...............

效果如下图
vue 大屏地球要3d,vue.js,echarts,3d

#3D地球和世界地图的结合显示

关键点在globe里面的layers属性上面,这个是地球表面层的配置,你可以使用该配置项加入云层,或者对 baseTexture 进行补充绘制出国家的轮廓等等。
然后layers的texture属性支持图片路径的字符串,图片或者 echart Canvas 的对象。

  import * as echarts from 'echarts'
  import 'echarts-gl'
  import world from '@/assets/world.js'
  
  const chartDom = document.getElementById('earth')
    const myChart = echarts.init(chartDom)
    const canvas = document.createElement('canvas')
    const mapChart = echarts.init(canvas, null, {
      //作为3d地球表面图层的对象
      width: 2048,
      height: 1024
    })
    echarts.registerMap('world', world)

    mapChart.setOption({
      visualMap: {
        type: 'piecewise',
        show: false,
        pieces: [
          { gt: 300, color: '#FF4646', label: '极高风险' },
          { gt: 200, lte: 300, color: '#FF7500', label: '高风险' },
          { gt: 100, lte: 200, color: '#FFD300', label: '中风险' },
          {
            gte: 0,
            lte: 100,
            color: {
              type: 'radial', // linear 线性渐变  radial径向渐变
              x: 0.5, // 0.5为正中心,如果小于渐变中心靠左
              y: 0.5, // 0.5为正中心,如果小于渐变中心靠上
              r: 0.5,
              colorStops: [
                {
                  offset: 0,
                  color: 'rgba(255,255,255,0.8)' // 0% 处的颜色
                },
                {
                  offset: 1,
                  color: 'rgba(86, 189, 255, 0.2)' // 100% 处的颜色
                }
              ]
            },
            label: '低风险'
          },
          { value: -1, color: '#93B8F8', label: '未知' }
        ]
      },
      series: [
        {
          type: 'map',
          map: 'world',
          // 绘制完整尺寸的 echarts 实例
          top: 0,
          left: 0,
          right: 0,
          bottom: 0,
          boundingCoords: [
            [-180, 90],
            [180, -90]
          ],
          itemStyle: {
            borderColor: '#aaa', //边界线颜色
            areaColor: 'transparent' //默认区域颜色
          },
          emphasis: {
            itemStyle: {
              show: true,
              areaColor: '#fff' //鼠标滑过区域颜色
            }
          },
          data: [
            { name: '美国', value: 34126.24 },
            { name: '日本', value: 7830.534 },
            { name: '菲律宾', value: 17150.76 },
            { name: '中国', value: 0 }
          ]
        }
      ]
    })

    myChart.setOption({
      globe: {
        baseTexture: 'https://images-1308194867.cos.ap-beijing.myqcloud.com/images/home/world.jpg', //地球的纹理。支持图片路径的字符串,图片或者 Canvas 的对象
        shading: 'lambert', //地球中三维图形的着色效果
        atmosphere: {
          show: true, //显示大气层
          offset: 8,
          color: '#13315E'
        },
        light: {
          ambient: {
            intensity: 0.8 //环境光源强度
          }, //环境光
          main: {
            intensity: 0.2 //光源强度
          }
        },
        viewControl: {
          autoRotate: true, // 是否开启视角绕物体的自动旋转查看
          autoRotateSpeed: 3, //物体自转的速度,单位为角度 / 秒,默认为10 ,也就是36秒转一圈。
          autoRotateAfterStill: 2, // 在鼠标静止操作后恢复自动旋转的时间间隔,默认 3s
          rotateSensitivity: 2, // 旋转操作的灵敏度,值越大越灵敏.设置为0后无法旋转。[1, 0]只能横向旋转.[0, 1]只能纵向旋转
          targetCoord: [116.46, 39.92], // 定位到北京
          maxDistance: 200,
          minDistance: 200
        },
        layers: [
          {
            //地球表面层的配置,你可以使用该配置项加入云层,或者对 baseTexture 进行补充绘制出国家的轮廓等等。
            show: true,
            type: 'blend',
            texture: mapChart
          }
        ]
      }
    })

效果图如下
vue 大屏地球要3d,vue.js,echarts,3d文章来源地址https://www.toymoban.com/news/detail-763171.html

到了这里,关于vue echarts 3D地球和世界地图的实现,并且显示不同国家的数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

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

    2024年04月25日
    浏览(26)
  • vue3+echarts实现3D地球+飞线

    效果图 1、下载         指令 我的版本: 2、html容器 3、js代码 附加纹理图

    2024年02月04日
    浏览(42)
  • Python 地图篇 - 使用pyecharts绘制世界地图、中国地图、省级地图、市级地图实例详解

    [ 系列文章篇 ] 2022 见证中国崛起从 Python 绘制中国地图开始:使用 pyecharts 最新版本绘制中国地图实例详解,个性化地图定制及常用参数解析 [ 专栏推荐 ] Python 短视频自动化发布,包含抖音、快手、 bilibili 、小红书、微视、好看视频、西瓜视频、视频号等 10 余种平台 先给大

    2024年02月03日
    浏览(47)
  • 【实现100个unity游戏之20】制作一个2d开放世界游戏,TileMap+柏林噪声生成随机地图(附源码)

    我的上一篇文章介绍了TileMap的使用,主要是为我这篇做一个铺垫,看过上一篇文章的人,应该已经很好的理解TileMap的使用了,这里我就不需要过多的解释一些繁琐而基础的知识了,省去很多时间。所有没看过上一篇文章的小伙伴我强烈建议先去看看:

    2024年01月20日
    浏览(52)
  • Python绘制世界疫情地图

    世界疫情数据下载: 方法一:关注微信公众号 大数据智库 (公众号二维码在我的主页左下角),回复疫情数据,即可获取网盘链接 方法二:在gitee上面下载》》点击:疫情数据下载 注:此数据是2022年3月12号的结果,其中透明的地方代表确诊人数小于10万人,白色的地方代表

    2023年04月27日
    浏览(35)
  • Vue 中使用Echarts构建3D地球

    一:要用Echarts实现3D地球 除了 echarts还是远远不够的 ,除了echarts外 我们 还得引用 echarts-gl  jquery 也是需要的 不然会有多次报错 1.收首先在 main.js中分别引入所需的插件, 此外 除了在main.js中 在相应.vue 中也需要引用 使用echarts的3D功能 全局引入Echarts-gl 一般建议装最低版本

    2024年02月12日
    浏览(37)
  • vue使用echarts与echarts-gl实现3d地图与 3d柱状图

    目录 前言 一、下载echarts与echarts gl 二、vue引入与页面使用 1.引入 2.页面引入echarts-gl 三、下载地图数据 四、使用地图 1、html初始化地图放入位置: 2、data创建变量 3、创建地图 4、钩子函数渲染地图 5、渲染完成效果 总结 提示:本项目使用vue,请提前搭建好vue项目 本次需求

    2024年02月12日
    浏览(42)
  • echarts实现3D地球模式--3D线

    前言:基于echarts实现3D地球自动旋转展示及不同坐标点相互连线 这里主体基于echarts,需引入依赖资源 echarts.min.js,echarts-gl.min.js 效果如下: 代码如下: 依赖资源 HTML CSS JS 贴图奉上 echarts官方文档地址:https://echarts.apache.org/zh/index.html 简单记录如有问题或更优解还请不要吝啬

    2024年02月04日
    浏览(50)
  • vue+echarts——实现3D地图+3D柱状图 效果——粗糙代码记录——技能提升

    最近看到同事在弄下面的这个图,这个图是从网上看到的,是某个网站的收费项目: 所以,最后的决定是通过 echarts 中的 3D地图 来写。但是写出来的效果不慎好看。功能是可以实现的。 初版效果图如下: 直接上代码: 我这边是存储到当前文件夹中了。。。 背景颜色是 ec

    2024年02月09日
    浏览(66)
  • vue-使用echarts+echarts-gl实现某个省份地区地图3d可视化

    前言 最近在开发中遇到一个需求,需要把一个地区地图变成3d感觉悬浮在大屏中间配合业务需求 其实echarts配合三方库就可以实现这个效果,具体细节需要自己调整 代码实现 1.下载各省份各地区地图数据-json文件-根据需求下载对应地图json数据引入即可 最新全国地图JSON数据

    2024年01月20日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包