uniapp vue3 使用echarts-gl 绘画3d图表

    我自己翻遍了网上,以及插件市场,其实并没有uniapp 上使用echarts-gl的样例,大多数都是使用插件市场的echarts的插件

   开始自己尝试直接用echartsgl  没有成功,后来尝试使用threejs  但是也遇到一些问题,最后我看官网的时候有   web-view | uni-app官网  想着就可以做一个外嵌的网页

 一、效果图 

 二、使用过程

1、先写一个外部的html

    结构的网页   就是自己跳转的写就行了

  (因为我用到了着一些js就引用了)

     uniapp官网有uniapp 和外部通信的方法和回调函数(但是都没用,不知道为什么)

    个人不知道为什么里面官方的方法没有用,比如数据传输和调用成功的方法(因为我只做数据展示,所以我在这里直接请求数据回来展示就行了)下面是官方的方法,如果有大佬知道这是为什么,请给小子留言是为什么谢谢。

2、uniapp代码

//在当前页面点击跳转(配界面我就不用说了大家去自己的pages.json去添加就行了)
uni.navigateTo({url: `/pages/threeView`
})// 另外写一个页面,这个页面专门负责跳转外部链接窗口的
<template><web-view :src="data.url"></web-view>
</template>
<script setup>import {reactive,ref,} from 'vue';let data = reactive({url: "http://127.0.0.1:8080/"})
</script>

    必须要使用一个页面跳转到,为什么要这样写,因为跳转之后就会有返回的一个箭头

           如果直接在一个页面上跳转就会出现

 3、跳转外部的地址

http://127.0.0.1:8080/  我这里上面是我自己启的一个服务

小程序仅支持加载网络网页,不支持本地htm   

所以如果真是的时候还是得让后端挂到服务器上面去

4、本地代码html

(其中的js 都是)  插件 引用了axios、echarts-gl、echarts、html2canvas 、vuejs(使用vue3写法)这些js 网络上都有可自行下载

如果自己不会挂,请参考以下

使用本地服务器打开html文件_html以服务器打开-CSDN博客

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>3D图标展示</title><script src="./echarts.min.js"></script><script src="./echarts-gl.min.js"></script><!-- <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script><script type="text/javascript" src="https://gitcode.net/dcloud/uni-app/-/raw/dev/dist/uni.webview.1.5.6.js"></script> --><script src="./axios.min.js"></script><script src="./vue.js"></script><script src="./html2canvas.min.js"></script>
</head><body><div id="app"><div class="operation"><button class="kaishi" @click="kaishi">开始</button>{{test}}<button class="zanting" @click="zanting">暂停</button><button class="xiazai" @click="xiazai">下载图片</button></div><div class="content"><div id="mychart" style="width:90vw;height:375px;"></div></div></div><script>const {createApp,ref,onMounted} = Vueconst app = createApp({setup() {//测试变量let index = 0;let intervalId;let curveData = []let dtc = nulllet option//测试函数const kaishi = () => {if (!intervalId) {intervalId = setInterval(function () {updatePoint(index++);if (index >= curveData.length) index = 0; // 循环回到起点}, 100);}}const zanting = () => {if (intervalId) {clearInterval(intervalId);intervalId = null;}}const xiazai = () => {html2canvas(document.getElementById("mychart")).then(function (canvas) {var img = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");// 创建a标签,实现下载var creatIMg = document.createElement("a");creatIMg.download = "3d.png"; // 设置下载的文件名,creatIMg.href = img; // 下载urldocument.body.appendChild(creatIMg);creatIMg.click();creatIMg.remove(); // 下载之后把创建的元素删除})}onMounted(() => {init()})const init = () => {axios({method: "get",url: "https://mpapi.sstlab.cn/test/ssr/latest?name=undefined&type=1"}).then(function (resp) {console.log(resp, "resp");})dtc = echarts.init(document.getElementById('mychart'))option = {tooltip: {},visualMap: {show: false,dimension: 2,min: -1,max: 1,inRange: {color: ['#313695','#4575b4','#74add1','#abd9e9','#e0f3f8','#ffffbf','#fee090','#fdae61','#f46d43','#d73027','#a50026']}},xAxis3D: {},yAxis3D: {},zAxis3D: {},grid3D: {left: '5%',top: '-5%',right: '5%',bottom: '0%',containLabel: true,viewControl: {distance: 230 // 根据实际情况调整这个值,数值越大,看起来图表越小}},series: [{type: 'line3D',coordinateSystem: 'cartesian3D',lineStyle: {width: 2,color: '#ff0000' // 线的颜色},data: (function () {let data = [];for (let t = 0; t < 2 * Math.PI; t += 0.1) {data.push([Math.sin(t), Math.cos(t),t]); // x, y, z 坐标}return data;})()}, {id: 'movingPoint', // 用于更新数据时引用type: 'scatter3D',coordinateSystem: 'cartesian3D',symbolSize: 10, // 点的大小itemStyle: {color: 'blue' // 点的颜色},data: [] // 初始为空}]}if (localStorage.getItem("threeView")) {console.log(localStorage.getItem("threeView"), "11111");option.series[0].data = JSON.parse(localStorage.getItem("threeView"));}// 使用刚指定的配置项和数据显示图表dtc.setOption(option);// 获取曲线数据curveData = option.series[0].data;}// 更新点的位置函数const updatePoint = (index) => {if (index >= curveData.length) index = 0; // 循环回到起点dtc.setOption({series: [{id: 'movingPoint',data: [curveData[index]]}]});}return {kaishi,zanting,xiazai}}})app.mount("#app")</script></body></html>
<style>.content {width: 100%;height: 100%;}#mychart {margin: auto;}.operation {position: fixed;top: 10px;left: 10px;z-index: 1000;}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【言语理解】片段阅读整体概述

1.1 题型分类 片段阅读一般有以下六种&#xff1a; 中心理解题 “这段文字意在说明&#xff1a;” “这段文字意在强调&#xff1a;” “这段文字主要介绍了&#xff1a;” “下列对文意概括最恰当的是&#xff1a;”标题拟定题 “最适合做这段文字标题的是&#xff1a;”下文…

什么是 OpenTelemetry?

OpenTelemetry 定义 OpenTelemetry (OTel) 是一个开源可观测性框架&#xff0c;允许开发团队以单一、统一的格式生成、处理和传输遥测数据&#xff08;telemetry data&#xff09;。它由云原生计算基金会 (CNCF) 开发&#xff0c;旨在提供标准化协议和工具&#xff0c;用于收集…

ESP32 gptimer通用定时器初始化报错:assert failed: timer_ll_set_clock_prescale

背景&#xff1a;IDF版本V5.1.2 &#xff0c;配置ESP32 通用定时器&#xff0c;实现100HZ&#xff0c;占空比50% 的PWM波形。 根据乐鑫官方的IDF指导文档设置内部计数器的分辨率&#xff0c;计数器每滴答一次相当于 1 / resolution_hz 秒。 &#xff08;ESP-IDF编程指导文档&a…

【NOIP普及组】统计单词数

【NOIP普及组】统计单词数 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 一般的文本编辑器都有查找单词的功能&#xff0c;该功能可以快速定位特定单词在文章中的位置&#xff0c;有的还能统计出特定单词在文章中出现的次数。 现在&#x…

Unity 如何优雅的限定文本长度, 包含对特殊字符,汉字,数字的处理。实际的案例包括 用户昵称

常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 ) 痛点1 无法对中文&#xff0c;数字&#xff0c;英文进行识别&#xff0c;同样数量的汉字和同样数量的英文像素长度是不一样的&#xff0c;当我们限定固定长度后&#xff0c;在界面上的排版不够美观 痛点2…

jmeter常用配置元件介绍总结之函数助手

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之函数助手 1.进入函数助手对话框2.常用函数的使用介绍2.1.RandomFromMultipleVars函数2.2.Random函数2.3.R…

发现了NitroShare的一个bug

NitroShare 是一个跨平台的局域网开源网络文件传输应用程序&#xff0c;它利用广播发现机制在本地网络中找到其他安装了 NitroShare 的设备&#xff0c;从而实现这些设备之间的文件和文件夹发送。 NitroShare 支持 Windows、macOS 和 Linux 操作系统。 NitroShare允许我们为…

【 ElementUI 组件Steps 步骤条使用新手详细教程】

本文介绍如何使用 ElementUI 组件库中的步骤条组件完成分步表单设计。 效果图&#xff1a; 基础用法​ 简单的步骤条。 设置 active 属性&#xff0c;接受一个 Number&#xff0c;表明步骤的 index&#xff0c;从 0 开始。 需要定宽的步骤条时&#xff0c;设置 space 属性即…

互联网技术净土?原生鸿蒙开启全新技术征程

鸿蒙生态与开发者的崭新机会 HarmonyOS NEXT承载着华为对未来操作系统的深刻理解&#xff0c;如今已发展为坚实的数字底座。它不仅在技术层面取得了全面突破&#xff0c;还在中国操作系统市场中站稳了脚跟。 当前&#xff0c;HarmonyOS NEXT的代码行数已超过1.1亿&#xff0c…

从书本到代码:人工智能如何改变教育游戏规则?

内容概要 随着时代的发展&#xff0c;人工智能在教育领域展现出前所未有的潜力&#xff0c;成为推动教育改革的重要力量。它不仅仅是一种技术工具&#xff0c;更是一种变革的催化剂&#xff0c;促使传统教育模式必须进行自我反思和更新。通过利用智能算法&#xff0c;教育者可…

Kubernetes-编排工具篇-01-Kustomize与Helm对比

Kustomize与Helm对比 0、前言 K8s 是一个开源容器编排平台&#xff0c;可自动执行容器化应用程序的部署、扩展和管理。近年来&#xff0c;K8s 已成为采用云原生架构和容器化技术的组织的标准。 但是由于K8s的复杂性&#xff0c;所以很多公司以及开源组织都在开发相关的工具来…

【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用

创建个性化的GPTs应用是一个涉及技术、设计和用户体验的过程。以下是详细步骤&#xff1a; ###1.确定应用目标和用户群体 在开始之前&#xff0c;你需要明确你的应用的目标和目标用户。这将帮助你在设计、开发和个性化方面做出相应的决策。例如&#xff0c;如果你的应用是为了…

141/142题环形链表

本题返回环入口的位置。使用快慢指针&#xff0c;快指针每次移动两个&#xff0c;慢指针每次移动一个。设前一段距离是a,进入环内到slow和fast相遇的地点距离是b&#xff0c;环内剩下的距离是c&#xff0c;如图所示。 环的长度是bc 慢指针移动距离是ab 快指针移动距离是abk(bc…

快速入门Zookeeper

Zookeeper ZooKeeper作为一个强大的开源分布式协调服务&#xff0c;扮演着分布式系统中至关重要的角色。它提供了一个中心化的服务&#xff0c;用于维护配置信息、命名、提供分布式同步以及提供组服务等。通过其高性能和可靠的特性&#xff0c;ZooKeeper能够确保在复杂的分布式…

SpringBoot环境下的共享汽车管理策略

3系统分析 3.1可行性分析 通过对本共享汽车管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本共享汽车管理系统采用SSM框架&#xff0c;JAVA作为开发语…

确定图像的熵和各向异性 Halcon entropy_gray 解析

1、图像的熵 1.1 介绍 图像熵&#xff08;image entropy&#xff09;是图像“繁忙”程度的估计值&#xff0c;它表示为图像灰度级集合的比特平均数&#xff0c;单位比特/像素&#xff0c;也描述了图像信源的平均信息量。熵指的是体系的混乱程度&#xff0c;对于图像而言&#…

什么是多因素身份验证(MFA)的安全性?

多因素身份验证(MFA)简介 什么是MFA 多因素身份验证(MFA)是一种安全过程&#xff0c;要求用户在授予对系统、应用程序或账户的访问权限之前提供两种或多种形式的验证。仅使用单个因素&#xff08;通常是用户名和密码&#xff09;保护资源会使它们容易受到泄露&#xff0c;添加…

特色3D打印机stm32迷你8轴双核心主板

我自己设计的3D打印机主板 1. 这是一块迷你的8轴主板, 主板尺寸为100mm*75mm, 使用一个8cm静音风扇散热足够了2. 这是一个带有保护的板子, 驱动上的gpio具有过压保护功能, 能够直接抗住24V的冲击, 意味着一个驱动炸了, 板子不烧, 并且其他的驱动也没事, 主板支持自动关机3. 8…

【LeetCode:3242. 设计相邻元素求和服务 + 模拟 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

GIF图片格式详解(二)

gif历史请参考上一篇《GIF图片格式详解&#xff08;一&#xff09;》&#xff0c;或直接访问博客地址&#xff1a;https://blog.whatsroot.xyz/2023/12/16/all-about-gif/ 文件格式概述 GIF格式采用调色板模式&#xff0c;即有一个颜色表&#xff0c;每种颜色可以使用RGB24格…