echarts中绘制3D三维地球
简介
echarts中的三维地球,需要用到世界地图json数据,我把json文件放到我的资源中,有需要的自行下载。
安装插件
// 安装echats
npm install echarts --save
npm install echarts-gl --save
项目中引用
1,引入安装的echarts插件
import * as echarts from 'echarts';
import 'echarts-gl';
2,引入世界地图json文件
import WorldJSON from './world.json'
3,echarts 注册世界地图
//注册世界地图
echarts.registerMap('world', WorldJSON);
绘制3d地球代码
// 绘制3d echarts图表
function draw3Dcharts() {let myChart = echarts.init(map.value);let geoCoordMap = {"海门": [121.15, 31.89],"鄂尔多斯": [109.781327, 39.608266],"菏泽": [115.480656, 35.23375],"合肥": [117.27, 31.86],"武汉": [114.31, 30.52],"大庆": [125.03, 46.58]};var alirl = [[[121.15, 31.89], [121.48, 31.22]],[[120.38, 37.35], [121.48, 31.22]],[[123.97, 47.33], [121.48, 31.22]],[[118.87, 42.28], [121.48, 31.22]],[[121.52, 36.89], [121.48, 31.22]],[[102.18, 38.52], [121.48, 31.22]],[[118.58, 24.93], [121.48, 31.22]],[[120.53, 36.86], [121.48, 31.22]],[[119.46, 35.42], [121.48, 31.22]],[[119.97, 35.88], [121.48, 31.22]],[[121.05, 32.08], [121.48, 31.22]],[[ 91.11, 29.97], [121.48, 31.22]]]var convertData = function (data) {var res = [];for (var i = 0; i < data.length; i++) {var geoCoord = geoCoordMap[data[i].name];if (geoCoord) {res.push({name: data[i].name,value: geoCoord.concat(data[i].value)});}}return res;};var baseTexture = null// 生成球面纹理function getBaseTexture() {let canvas = document.createElement('canvas');baseTexture = echarts.init(canvas, null , {width: 4096,height: 2048,});baseTexture.setOption({backgroundColor: '#001213',series: [{type: 'map',map: 'world',left: 0,top: 0,right: 0,bottom: 0,roam:true,boundingCoords: [[-180, 90],[180, -90],],label: {show: false,color: '#fff',fontSize: 20,},itemStyle: {areaColor: '#004444',borderColor: '#00cccc',borderWidth: 2,},},],});drawEarth();}function drawEarth() {let option = {tooltip: {show: true,},globe: {silent: true,shading: 'color',environment: '#000',baseTexture: baseTexture,viewControl: {rotateSensitivity: 3, //鼠标旋转灵敏度,设置为0后无法旋转。zoomSensitivity: 0,//鼠标缩放灵敏度autoRotate: true,//自动旋转autoRotateAfterStill: 1,//鼠标停止后多久恢复旋转(为0时暂停后不恢复旋转)//alpha:160,//视角绕 x 轴,即上下旋转的角度//beta:-20,//视角绕 y 轴,即左右旋转的角度。// targetCoord: [75.508268, 18.247872] //定位到哪里// 定位到北京targetCoord: [116.46, 39.92],}},series: [//柱状图{type: "bar3D",coordinateSystem: 'globe',barSize: 0.5, //柱子粗细shading: 'lambert',opacity: 1,bevelSize: 0.2,itemStyle: {color: '#EBE806',opacity: 0.1},label: {show: false,formatter: '{b}'},data: convertData([{name: "海门",value: (Math.random() * 300).toFixed(2)}, {name: "鄂尔多斯",value: (Math.random() * 300).toFixed(2)}, {name: "招远",value: (Math.random() * 300).toFixed(2)}, {name: "舟山",value: (Math.random() * 300).toFixed(2)}, {name: "齐齐哈尔",value: (Math.random() * 300).toFixed(2)}, {name: "盐城",value: (Math.random() * 300).toFixed(2)}, {name: "赤峰",value: (Math.random() * 300).toFixed(2)}]),},{name: 'lines3D',type: 'lines3D',coordinateSystem: 'globe',effect: {show: true,period: 2,trailWidth: 3,trailLength: 0.5,trailOpacity: 1,trailColor: '#0087f4'},blendMode: 'lighter',lineStyle: {// width: 2width: 1,color: '#0087f4',opacity: 0},data: [],silent: false,},{type: 'lines3D',coordinateSystem: 'globe',effect: {show: true,trailWidth: 5,trailOpacity: 1,trailLength: 0.2,constantSpeed: 5},blendMode: 'lighter',lineStyle: { //航线的视图效果color: '#EBE806',width: 1,opacity: 1},data: alirl}]};for (let i = 0; i < 50; i++) {option.series[1].data = option.series[1].data.concat(rodamData())}myChart.clear();myChart.setOption(option, true);window.addEventListener('resize', () => {myChart.resize();});}function rodamData() {let longitude = 105.18let longitude2 = Math.random() * 360 - 180let latitude = 37.51let latitude2 = Math.random() * 180 - 90return {coords: [[longitude2, latitude2],[longitude, latitude]],value: (Math.random() * 3000).toFixed(2)}}getBaseTexture();
}
效果图展示
相关文章:

echarts中绘制3D三维地球
简介 echarts中的三维地球,需要用到世界地图json数据,我把json文件放到我的资源中,有需要的自行下载。 安装插件 // 安装echats npm install echarts --save npm install echarts-gl --save 项目中引用 1,引入安装的echarts…...

go grpc高级用法
文章目录 错误处理常规用法进阶用法原理 多路复用元数据负载均衡压缩数据 错误处理 gRPC 一般不在 message 中定义错误。毕竟每个 gRPC 服务本身就带一个 error 的返回值,这是用来传输错误的专用通道。gRPC 中所有的错误返回都应该是 nil 或者 由 status.Status 产…...
Redis实现登录的优化
目录 1 前言 2 实现步骤 2.1 软件环境准备 2.1.1 Redis的安装 2.1.2 在pom.xml中添加依赖 2.1.3 在application.yml中进行相关配置 2.2 StringRedisTemplate的常用方法 2.2.1 获取operations 2.2.2 主要方法 2.3 令牌主动失效机制 2.3.1 登录时将令牌存入Redis 2.…...

ROS方向第二次汇报(5)
文章目录 1.本方向内学习内容:1.1.自定义msg:1.1.1.定义msg文件:1.1.2.编辑配置文件: 1.2.自定义srv:1.2.1.定义srv文件:1.2.2.编辑配置文件: 1.3.服务通信案例实现:1.3.1.服务端实现…...
C# 浅克隆与深克隆
在C#中,浅克隆(Shallow Clone)和深克隆(Deep Clone)是两种常见的对象克隆技术,用于创建对象的新副本。 它们的主要区别在于复制对象的层次和属性的处理方式。 浅克隆(Shallow Copy)…...

Shell 正则表达式及综合案例及文本处理工具
目录 一、常规匹配 二、常用特殊字符 三、匹配手机号 四、案例之归档文件 五、案例之定时归档文件 六、Shell文本处理工具 1. cut工具 2. awk工具 一、常规匹配 一串不包含特殊字符的正则表达式匹配它自己 例子,比如说想要查看密码包含root字符串的&#x…...

React | Center 组件
在 Flutter 中有 Center 组件,效果就是让子组件整体居中,挺好用。 React 中虽然没有对应的组件,但是可以简单封装一个: index.less .container {display: flex;justify-content: center;align-items: center;align-content: ce…...
头歌C++之函数强化练习题
目录 第1关:结构实现复数运算 任务描述 编程要求 第2关:求亲密对数 任务描述 编程要求 第3关:计算一年的第几天 任务描述 编程要求 第4关:正整数求和 任务描述 编程要求 第5关:Pig Latin 任务描述 编程要求 第6关:打印日历 任务描述 编程要求 第1关:结…...

淘宝扭蛋机小程序:开启你的惊喜之旅
随着移动互联网的飞速发展,各种小程序层出不穷,其中,淘宝扭蛋机小程序以其独特的互动性和趣味性,吸引了大量用户。本文将为你详细介绍这款小程序的特色功能、用户体验以及如何使用,助你开启一段惊喜之旅。 一、特色功…...

Jmeter 基于Docker 实现分布式测试
基于Docker 实现分布式测试 制作Jmeter基础镜像制作工作节点镜像启动工作节点启动控制节点遇到的问题 使用Docker 部署Jmeter非常方便,可以省略软件的安装以及配置,比如jdk、jmeter。需要部署多个工作节点可以节省时间。 制作Jmeter基础镜像 下载jmeter…...

Vite与Webpack打包内存溢出问题优雅处理方式
Vite与Webpack打包内存溢出问题处理 文章目录 Vite与Webpack打包内存溢出问题处理1. Vite1. 打包错误提示2. 命令行方式解决3. 配置环境变量方式解决1. 设置变量2. 配置系统的环境变量 2. Webpack1. 打包错误提示2. 命令行方式解决3. 配置环境变量方式解决1. 设置变量2. 配置系…...
sqlalchemy——@listens_for
问:sqlalchemy如何实现:表中指定数据更新时,其time字段自动更新?答:使用listens_for 装饰器来注册事件监听器,确保在项目数据更新时触发相应的处理逻辑。 示例代码如下: # coding: utf-8 impo…...

MySQL进阶之锁(全局锁以及备份报错解决)
锁 全局锁 全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语 句,已经更新操作的事务提交语句都将被阻塞。 其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定ÿ…...
C#实现windows系统重启、关机
1、C#实现windows系统重启、关机 实现原理,使用系统shutdown命令执行: 强制关机: shutdown -s -f -t 0 强制重启: shutdown -r -f -t 0 2、关于shutdown命令详解: C#实现控制Windows系统关机、重启和注销的方法&…...
JS中Set和Map用法详解
目录 1、Set 1.基本用法 2.Set 实例的属性和方法 3.遍历操作 2、Map 1、Set 1.基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 const s …...

使用nginx对视频、音频、图片等静态资源网址,加token签权
目前很多静态资源,都可以无权限验证,进行访问或转发,对有价值的资源进行签权,限制转发无法在代码中实现拦截,我们可以使用nginx对视频、音频、图片等静态资源网址,加token签权 如: http://192…...

[每周一更]-(第86期):NLP-实战操作-文本分类
NLP文本分类的应用场景 医疗领域 - 病历自动摘要: 应用: 利用NLP技术从医疗文档中自动生成病历摘要,以帮助医生更快速地了解患者的状况。 法律领域 - 法律文件分类: 应用: 使用文本分类技术自动分类法律文件…...

【Springcloud篇】学习笔记五(十章):Gateway网关
第十章_Gateway新一代网关 1.Gateway简介 1.1官网 上一代zuul 1.X:https://github.com/Netflix/zuul/wiki 当前gateway:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/ 1.2是什么 SpringCloud …...

Linux开发工具
前言:哈喽小伙伴们,经过前边的学习我们已经掌握了Linux的基本指令和权限,相信大家学完这些之后都会对Linux有一个更加深入的认识,但是Linux的学习可以说是从现在才刚刚开始。 这篇文章,我们将讲解若干个Linux的开发工…...

C++ 动态规划 线性DP 最长共同子序列
给定两个长度分别为 N 和 M 的字符串 A 和 B ,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M 。 第二行包含一个长度为 N 的字符串,表示字符串 A 。 第三行包含一个长度为 M 的字符串,表…...

自动化办公集成工具:一站式解决文档处理难题
1. 项目概述 在当今信息化时代,办公自动化已成为提升工作效率的关键。本文将详细介绍一款基于Python和PyQt5开发的「自动化办公集成工具」,该工具集成了多种常用的办公文档处理功能,包括批量格式转换、文本智能替换、表格数据清洗等,旨在为用户提供一站式的办公自动化解决方…...

在 Android Studio 中使用 GitLab 添加图片到 README.md
1. 将图片文件添加到项目中 在项目根目录下创建一个 images 或 assets 文件夹 将你的图片文件(如 screenshot.png)复制到这个文件夹中 2. 跟提交项目一样,提交图片到 GitLab 在 Android Studio 的 Git 工具窗口中: 右键点击图片…...

基于dify的营养分析工作流:3分钟生成个人营养分析报告
你去医院做体检,需要多久拿到体检报告呢?医院会为每位病人做一份多维度的健康报告吗?"人工报告需1小时/份?数据误差率高达35%?传统工具无法个性化? Dify工作流AI模型的组合拳,正在重塑健康…...
stm32——UART和USART
串口通信协议UART和USART 1. UART与USART协议详解 特性UART (Universal Asynchronous Receiver/Transmitter)USART (Universal Synchronous Asynchronous Receiver/Transmitter)全称通用异步收发器通用同步/异步收发器同步/异步异步:不共享时钟,数据通过…...

iptables实验
实验一:搭建web服务,设置任何人能够通过80端口访问。 1.下载并启用httpd服务器 dnf -y install httpd 开启httpd服务器 systemctl start httpd 查看是否启用 下载并启用iptables,并关闭firewalld yum install iptable…...
mybatis的if判断==‘1‘不生效,改成‘1‘.toString()才生效的原因
mybatis的xml文件中的if判断‘1’不生效,改成’1’.toString()才生效 Mapper接口传入的参数 List<Table> queryList(Param("state") String state);xml内容 <where><if test"state ! null and state 1">AND EXISTS(select…...
Go 中 map 的双值检测写法详解
Go 中 map 的双值检测写法详解 在 Go 中,if char, exists : pairs[s[i]]; exists { 是一种利用 Go 语言特性编写的优雅条件语句,用于检测 map 中是否存在某个键。让我们分解解释这种写法: 语法结构解析 if value, ok : mapVariable[key]; …...

【工具使用】STM32CubeMX-FreeRTOS操作系统-信号标志、互斥锁、信号量篇
一、概述 无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。 本文主要讲述STM32芯片FreeRTOS信号标志、互斥锁和信号…...
网络协议通俗易懂详解指南
目录 1. 什么是网络协议? 1.1 协议的本质 1.2 为什么需要协议? 1.3 协议分层的概念 2. TCP协议详解 - 可靠的信使 📦 2.1 TCP是什么? 2.2 TCP的核心特性 🔗 面向连接 🛡️ 可靠传输 📊 流量控制 2.3 TCP三次握手 - 建立连接 2.4 TCP四次挥手 - 断开连接…...

鸿蒙PC,有什么缺点?
点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 价格太高,二是部分管理员权限首先,三对于开发者不太友好举个例子:VSCode的兼容性对程序员至关重要。若能支持VSCode,这台电脑将成为大多数开发者…...