Mars3D集成到ruoyi管理系统

news2024/12/29 10:47:55

尽管Mars3d的官网上提供了详尽的文档和API参考手册,但是在集成至ruoyi后天管理系统中时,还是碰到了不少问题:

  1. npm安装方式,若只安装mars3d,会提示找不到mars3d-cesium
  2. 引用cesium相关库的时候,报404错误

这两个问题搞了近2个小时才解决,特此记录一下。

我的解决方式如下:

  1. npm同时安装mars3d和mars3d-cesium依赖,package.json部分如下:
    "dependencies": {
        "@element-plus/icons-vue": "2.0.10",
        "@icon-park/svg": "^1.4.2",
        "@turf/turf": "^6.5.0",
        "@vueuse/core": "9.5.0",
        "axios": "0.27.2",
        "echarts": "5.4.0",
        "element-plus": "2.2.27",
        "file-saver": "2.0.5",
        "fuse.js": "6.6.2",
        "js-cookie": "3.0.1",
        "jsencrypt": "3.3.1",
        "mapv": "^2.0.62",
        "mars3d": "^3.5.2",
        "mars3d-cesium": "^1.103.2",
        "nprogress": "0.2.0",
        "ol": "^7.3.0",
        "pinia": "2.0.22",
        "splitpanes": "^3.1.5",
        "vite-plugin-mars3d": "^2.1.0",
        "vue": "3.2.45",
        "vue-count-to": "^1.0.13",
        "vue-cropper": "1.0.3",
        "vue-router": "4.1.4"
      }

    2. 安装vite-plugin-mars3d 依赖,配置vite.config.js,代码片段如下

    import { vitePluginMars3d } from 'vite-plugin-mars3d';
    
    export default defineConfig(({ mode, command }) => {
      const env = loadEnv(mode, process.cwd())
      const { VITE_APP_ENV } = env
      return {
        plugins: [createVitePlugins(env, command === 'build'), vitePluginMars3d()]
      }
    })
    

    3. 配置完成之后,在.vue即可使用mars3d相关的库了

    <template>
        <div id="index3DMap" class="mars3d-container" />
    </template>
    <script setup lang="ts">
    import { computed, onUnmounted, onMounted, h, ref } from "vue"
    
    //引入cesium基础库
    import "mars3d-cesium/Build/Cesium/Widgets/widgets.css";
    import * as Cesium from "mars3d-cesium";
    
    //导入mars3d主库
    import "mars3d/dist/mars3d.css";
    import * as mars3d from "mars3d";
    
    import { getQueryString } from "@/utils/mars-util"
    
    // 用于存放地球组件实例
    let map: mars3d.Map // 地图对象
    
    const configUrl = `${process.env.BASE_URL}config/config.json`
    onMounted(() => {
        // 获取配置
        mars3d.Util.fetchJson({ url: configUrl }).then(data => {
            initMars3d(data.map3d)
        })
    })
    
    // onload事件将在地图渲染后触发
    const emit = defineEmits(["onload"])
    
    const initMars3d = (option) => {
        map = new mars3d.Map("index3DMap", option)
    
        // 如果有xyz传参,进行定位
        const lat = getQueryString("lat")
        const lng = getQueryString("lng")
        if (lat && lng) {
            map.flyToPoint(new mars3d.LngLatPoint(lng, lat), { duration: 0 })
        }
    
        // 开场动画
        map.openFlyAnimation();
    
        // 针对不同终端的优化配置
        if (mars3d.Util.isPCBroswer()) {
            map.zoomFactor = 2.0 // 鼠标滚轮放大的步长参数
    
            // IE浏览器优化
            if (window.navigator.userAgent.toLowerCase().indexOf("msie") >= 0) {
                map.viewer.targetFrameRate = 20 // 限制帧率
                map.scene.requestRenderMode = false // 取消实时渲染
            }
        } else {
            map.zoomFactor = 5.0 // 鼠标滚轮放大的步长参数
    
            // 移动设备上禁掉以下几个选项,可以相对更加流畅
            map.scene.requestRenderMode = false // 取消实时渲染
            map.scene.fog.enabled = false
            map.scene.skyAtmosphere.show = false
            map.scene.globe.showGroundAtmosphere = false
        }
    
        // //二三维切换不用动画
        if (map.viewer.sceneModePicker) {
            map.viewer.sceneModePicker.viewModel.duration = 0.0
        }
    
        // webgl渲染失败后,刷新页面
        map.on(mars3d.EventType.renderError, async () => {
            // $alert("程序内存消耗过大,请重启浏览器")
            window.location.reload()
        })
    }
    
    
    </script>
    <style lang="scss">
    .mars3d-locationbar {
        background-color: black !important;
    }
    
    .mars3d-distance-legend {
        z-index: 992;
    }
    </style>

    最后的效果如下图所示:

     

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

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

相关文章

MongoDB基础学习总结及SpringBoot项目中的整合

前言 MongoDB 如今是最流行的 NoSQL 数据库之一&#xff0c;被广泛应用于各行各业中&#xff0c;很多创业公司数据库选型就直接使用了 MongoDB。MongoDB一经推出就受到了广大社区的热爱&#xff0c;可以说是对程序员最友好的一种数据库之一&#xff0c;下面主要是笔者在平常的…

大学刚毕业,用10000小时,走进字节跳动拿了offer

前言&#xff1a; 没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2020年7月&#xff0c;我有幸成为了字节跳动的一名测试开发&#xff0c…

IO流、多线程

FileInputStream FileOutputStream 原理&#xff1a; //1、创建一个FileOutputStream对象&#xff0c;构造方法中写入数据的目的地 FileOutStream fos new FileOutputStream("C:\\a.txt"); //2、调用FileOutputStream对象中的方法write&#xff0c;把数据写入文件中…

【微信小程序】关于实现自定义图片代替checkbox样式的记录

前言 checkbox很好使&#xff0c;使用中往往需要改变它的样式。 记录一下用自定义的图片代替原有样式的过程。 关于把checkbox从&#xff1a;变成的过程 正文 思路 问题拆分&#xff1a; ①如何修改checkbox的样式 ②如何使用图片代替原有样式 如何修改checkbox的样式 修…

氢原子的电子轨道半径、能量、速度

在https://blog.csdn.net/qq_35379989/article/details/130065868?spm1001.2014.3001.5501中我们已经给出了波尔模型的三大假设&#xff1a;定态假设、跃迁假设以及角动量量子化。 一、氢原子的轨道半径 在跃迁假设中&#xff0c;通过设定波尔模型轨道能量&#xff1a;与电子…

各种商业版本的ChatGPT已经推出了,还有必要搞个人的Chat吗?

一、引言 虽然市面上已经存在许多商业版本的ChatGPT交互产品&#xff0c;但在我们的开发中&#xff0c;决定专注于打造一个更加个性化、更贴合个人需求的智能助手。我们相信&#xff0c;每个人都是独一无二的&#xff0c;他们的需求也是各不相同的。因此&#xff0c;个人ChatG…

浅析PHP代码审计中的SQL注入漏洞

浅析PHP代码审计中的SQL注入漏洞1.概述2.普通注入3.编码注入宽字节注入二次urldecode注入4.漏洞防范gpc/rutime魔术引号过滤函数和类addslashes函数mysql_[real_]escape_string函数intval等字符转换PDO prepare预编译1.概述 SQL注入的攻击方式有下面几种&#xff1a; 在权限较…

常用电阻的作用

1、限流&#xff1a; 根据公式&#xff1a;I U / R&#xff1b;可知&#xff0c;电压固定的情况下&#xff0c;电阻越大&#xff0c;电流越小 常用于保护器件&#xff0c; 例如&#xff1a;MCU的输入输出信号线串联电阻&#xff0c;以避免电流过大&#xff0c;损坏元器件 …

快鲸scrm助力眼科机构提效客户运营,提升转化率

眼科机构普遍面临着以下几方面的业务挑战 &#xff08;1&#xff09;存在信任危机&#xff0c;用户决策周期长 眼睛是心灵的窗户&#xff0c;患者在对眼部治疗机构的选择上格外慎重&#xff0c;因而决策周期较长&#xff0c;眼科机构需要通过品牌建设、 IP 的打造、优质的产品…

SDL(2)-加载图片

加载BMP 1.使用SDL_init初始化SDL库 2.使用SDL_CreateWindow创建一个窗口 3.使用SDL_GetWindowSurface获取创建窗口的surface 4.使用SDL_LoadBMP加载一张BMP图片 5.使用SDL_BlitSurface将加载的bmp surface拷贝到窗口的surface 6.使用SDL_UpdateWindowSurface更新到窗口 …

【严重】vm2 <3.9.15 沙箱逃逸漏洞(CVE-2023-29017)

漏洞描述 vm2 是一个沙箱&#xff0c;用于在 Node.js 环境中运行不受信任的代码。宿主对象(Host objects)是指由 Node.js 的宿主环境提供的对象&#xff0c;例如全局对象、文件系统或网络请求等。 vm2 3.9.15之前版本中&#xff0c;当处理异步错误时未正确处理 Error.prepare…

中国大学哪家强?Python爬取排名榜,太棒啦(31)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 欢迎和猫妹一起&#xff0c;趣味学Python。 今日主题 如何用Python&#xff0c;抓取并分析2023中国大学排名数据。 用到的Python库有requests、bs4。 requests库 reque…

PixiJS 渲染优化

最近做在线CAD可视化与编辑&#xff0c;对前端的可视化渲染技术进行了选型&#xff0c;对于二维CAD来说一般用canvas就够了&#xff0c;但是canvas每一次平移&#xff0c;缩放&#xff0c;更新数据都需要重新计算渲染所有的图形数据&#xff0c;数据一多就显得非常卡。如果使用…

TCP和UDP在实际工作中的应用

前言 日常在网上浏览一些文章时都会看到一些介绍TCP和UDP的文章&#xff0c;每次都是草草浏览&#xff0c;而没有深入的去研究&#xff0c;这几天在做日志采集工具的时候恰好遇到一个问题&#xff0c;就是采集端将采集到的内容发送到服务端时这里采用的通信协议应该如何考量&a…

SpringBoot源码分析

SpringBoot源码分析1.启动类分析2.SpringBoot的项目启动流程1.SpringApplication构造函数1&#xff09;deduceFromClasspath()2&#xff09;getSpringFactoriesInstances2.1&#xff09;loadFactoryNames加载类名称2.2&#xff09;createSpringFactoriesInstances创建实例2.run…

gradle环境搭建

目录 gradle是什么 gradle环境搭建 IDEA 配置 Gradle 创建 Gradle 项目 gradle是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置&#xff0c;也增加了基于Kotlin语言的kotlin-based …

Java基础总结(二)

文章目录一、ObjectObject中的成员方法&#xff08;11个&#xff09;toStringequalsclone二、Objects三、BigInteger和BigDecimaBigIntegerBigDecima四、正则表达式五、DateJDK7前时间相关类SimpleDateFormat类Calendar类JDK8新增时间相关类六、包装类一、Object 没有一个属性…

【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等

文章目录1. ECC椭圆曲线1.1 曲线类型1.2 曲线标准1.3 表示方法1.4 曲线运算1.4.1 点加&#xff08;Point Addition&#xff09;1.4.2 点乘&#xff08;Point Multiplication&#xff09;1.4.3 倍点&#xff08;Point Double&#xff09;2. ECDSA2.1 私钥签名2.2 公钥验签3. ECD…

Java——旋转数组的最小数字

题目链接 牛客在线oj题——旋转数组的最小数字 题目描述 有一个长度为 n 的非降序数组&#xff0c;比如[1,2,3,4,5]&#xff0c;将它进行旋转&#xff0c;即把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;变成一个旋转数组&#xff0c;比如变成了[3,4,5,1,2]&…

Stable Diffusion成为生产力工具(五):放大并修复老照片、马赛克照片、身份证件照

S&#xff1a;你安装stable diffusion就是为了看小姐姐么&#xff1f; I &#xff1a;当然不是&#xff0c;当然是为了公司的发展谋出路~~ 预先学习&#xff1a; 安装webui《Windows安装Stable Diffusion WebUI及问题解决记录》。运行使用时问题《Windows使用Stable Diffusion时…