加载不同本地gltf模型,模型内容不更新的解决方案

相关链接

http://mars3d.cn/editor-vue.html?key=ex_6_2_2&id=layer-graphic/draw/draw-model

问题内容

加载本地gltf模型的时候,不clear图层,再打开其他本地gltf,gltf的内容就不更新

重现步骤

进入官网示例,贴入以下代码,加载本地不同的gltf模型,发现后面加载的gltf模型都是第一个的内容

import * as mars3d from "mars3d"export let map // mars3d.Map三维地图对象
export let graphicLayer // 矢量图层对象export const eventTarget = new mars3d.BaseClass() // 事件对象,用于抛出事件到面板中// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
export const mapOptions = {scene: {center: { lat: 31.516143, lng: 117.282937, alt: 46242, heading: 2, pitch: -49 }}
}/*** 初始化地图业务,生命周期钩子函数(必须)* 框架在地图初始化完成后自动调用该函数* @param {mars3d.Map} mapInstance 地图对象* @returns {void} 无*/
export function onMounted(mapInstance) {map = mapInstance // 记录mapmap.fixedLight = true // 固定光照,避免gltf模型随时间存在亮度不一致。graphicLayer = new mars3d.layer.GraphicLayer({hasEdit: true,isAutoEditing: true // 绘制完成后是否自动激活编辑})map.addLayer(graphicLayer)// 在layer上绑定监听事件graphicLayer.on(mars3d.EventType.click, function (event) {console.log("监听layer,单击了矢量对象", event)})
}/*** 释放当前地图业务的生命周期函数* @returns {void} 无*/
export function onUnmounted() {map = null
}export function startDrawModel(url, isProxy) {if (isProxy) {url = "//server.mars3d.cn/proxy/" + url}graphicLayer.startDraw({type: "model",drawShow: true, // 绘制时,是否显示模型,可避免在3dtiles上拾取坐标存在问题。style: {url,scale: 1}})
}// 地形
export function chkHasTerrain(isStkTerrain) {map.hasTerrain = isStkTerrain
}// 深度检测
export function chkTestTerrain(val) {map.scene.globe.depthTestAgainstTerrain = valif (val) {globalMsg("深度监测打开后,您将无法看到地下或被地形遮挡的对象。")}
}export function onlyVertexPosition(val) {map.onlyVertexPosition = val
}/***打开geojson文件** @export* @param {FileInfo} file 文件名称* @returns {void} 无*/
export function openGeoJSON(file) {const fileName = file.nameconst fileType = fileName?.substring(fileName.lastIndexOf(".") + 1, fileName.length).toLowerCase()if (fileType === "json" || fileType === "geojson") {const reader = new FileReader()console.log("reader")console.log(reader)reader.readAsText(file, "UTF-8")reader.onloadend = function (e) {const json = this.resultgraphicLayer.loadGeoJSON(json, {flyTo: true})}} else if (fileType === "glb" || fileType === "gltf") {// 主要差别就是注释掉了这个代码// graphicLayer.clear()const reader = new FileReader()reader.readAsArrayBuffer(file)reader.onloadend = function (e) {const arrayBuffer = this.resultconst graphic = new mars3d.graphic.ModelPrimitive({position: [117.221674, 31.823752, 34.7],style: {url: new Uint8Array(arrayBuffer),scale: 1,minimumPixelSize: 50},hasEdit: false})graphicLayer.addGraphic(graphic)graphic.flyTo({ radius: 1000 })}} else {globalMsg("暂不支持 " + fileType + " 文件类型的数据!")}
}export function saveGeoJSON() {if (graphicLayer.length === 0) {globalMsg("当前没有标注任何数据,无需保存!")return}const geojson = graphicLayer.toGeoJSON()mars3d.Util.downloadFile("我的标注.json", JSON.stringify(geojson))
}

解决方案

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

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

相关文章

LabVIEW实现串口调试助手

目录 1、串口通信原理 2、硬件环境部署 3、串口通信函数 4、程序架构 5、前面板设计 6、程序框图设计 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联…

云计算的发展历史与未来展望

云计算的起源与发展 云计算的概念最早可以追溯到20世纪60年代,当时的计算机科学家约翰麦卡锡(John McCarthy)提出了“按需提供计算能力”的构想。尽管这一理念在当时的技术条件下无法实现,但为云计算的未来发展奠定了理论基础。 …

【51单片机】程序实验910.直流电机-步进电机

主要参考学习资料:B站【普中官方】51单片机手把手教学视频 前置知识:C语言 单片机套装:普中STC51单片机开发板A4标准版套餐7 码字不易,求点赞收藏加关注(•ω•̥) 有问题欢迎评论区讨论~ 目录 程序实验9&10.直流电机-步进电机…

Linux——自定义简单shell

shell 自定义shell目标普通命令和内建命令(补充) shell实现实现原理实现代码 自定义shell 目标 能处理普通命令能处理内建命令要能帮助我们理解内建命令/本地变量/环境变量这些概念理解shell的运行 普通命令和内建命令(补充) …

如何把Qt exe文件发送给其他人使用

如何把Qt exe文件发送给其他人使用 1、先把 Debug改成Release2、重新构建项目3、运行项目4、找到release文件夹5、新建文件夹,存放exe文件6、打开qt控制台串口7、下载各种文件8、压缩,发送压缩包给别人 1、先把 Debug改成Release 2、重新构建项目 3、运行…

Kafka的消费消息是如何传递的?

大家好,我是锋哥。今天分享关于【Kafka的消费消息是如何传递的?】面试题。希望对大家有帮助; Kafka的消费消息是如何传递的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,消息的消费是通过消费…

el-drawer如何实现增加resize拖曳改变宽度大小,通过小图标进行拖拽

请先看效果图 我主要是通过这个按钮来进行拖拽的,记住自行添加按钮图片 第一步 新建一个myDrawerDrag.js文件 import Vue from vueVue.directive(drawerDrag, {bind(el, binding, vnode, oldVnode) {const minWidth 400const dragDom el.querySelector(.el-drawe…

C#窗体简单登录

创建一个Windows登录程序,创建两个窗体,一个用来登录,一个为欢迎窗体,要求输入用户名和密码(以个人的姓名和学号分别作为用户名和密码),点击【登录】按钮登录,登录成功后显示欢迎窗体…

Java基础全解:构建扎实编程技能

文章目录 1. Hello World 程序深入解析: 2. 数据类型深入解析: 3. 条件判断深入解析: 4. 循环结构深入解析: 5. 数组深入解析: 6. 方法定义与调用深入解析: 1. Hello World 程序 深入解析: 类…

开发规范:Restful风格

REST(REpresentational State Transfer),表述性状态转换,它是一种软件架构的风格。这么说可能太过于专业,有些难以理解,不妨看个案例: 传统风格url 假如说我们需要使用传统风格url发起请求&am…

StarRocks-同步hive数据

官方文档对csv,orc ,json ,parquet都支持的比较好。写文章的时候SR我们生产用的是3.1.x版本 1、同步hive表textfile格式的数据 hive表结构 CREATE EXTERNAL TABLE ads_d_app_rank_inc(filename string COMMENT 解析的文件名称,rank string COMMENT ap…

【大数据学习 | Spark-SQL】定义UDF和DUAF,UDTF函数

1. UDF函数(用户自定义函数) 一般指的是用户自己定义的单行函数。一进一出,函数接受的是一行中的一个或者多个字段值,返回一个值。比如MySQL中的,日期相关的dateDiff函数,字符串相关的substring函数。 先…

详解Qt pdf 之QPdfSelection 选择文本类

文章目录 QPdfSelection 类详解前言 详细说明公共函数说明1. 构造函数2. text3. boundingRect4. isEmpty5. startPage6. endPage 使用场景示例代码代码说明总结 QPdfSelection 类详解 前言 QPdfSelection 是 Qt PDF 模块中的一个类,用于表示在 PDF 文档中被选中的…

记录部署dvwa靶场踩的几个坑

DVWA reCAPTCHA key: Missing 解决方法:网上随便copy一个,粘贴到config.inc.php配置文件里,具体我也是参考这篇文章的:DVWA下载、安装You dont have permission to access this resource.Server unable to read htaccess file, de…

linux——进程间通信及管道的应用场景

linux进程的控制-CSDN博客 liunx——进程间通信(管道通信)-CSDN博客 文章目录 文章目录 前言 二、管道的应用 1.创建子进程 1、描述: 2.创建进程及管理 3、子进程接受任务 4、控制子进程 总结 前言 上篇博客我们学习了进程间通信&…

开发工具WebStorm,VSCode,HbuilderX

WebStorm、VSCode 和 HBuilderX 是三款非常受欢迎的开发工具,各自有不同的特点和适用场景。下面我会详细比较它们的优势和劣势,帮助你选择最合适的开发环境。 1. WebStorm WebStorm 是由 JetBrains 开发的一款强大的 JavaScript IDE,专门针对…

FPGA实现串口升级及MultiBoot(十)串口升级SPI FLASH实现

本文目录索引 工程架构example9工程设计Vivado设计Vitis设计example9工程验证1、读取FLASH ID2、擦除整个FLASH3、Blank-Check4、烧写Golden区位流5、读取FLASH内容6、烧写MultiBoot区位流(升级位流)7、MultiBoot区位流(升级位流)启动example10工程设计Vivado设计Vitis设计exam…

AIGC引领金融大模型革命:未来已来

文章目录 金融大模型的应用场景1. **金融风险管理**2. **量化交易**3. **个性化投资建议**4. **金融欺诈检测和预防**5. **智能客户服务** 金融大模型开发面临的挑战应对策略《金融大模型开发基础与实践》亮点内容简介作者简介获取方式 在AIGC(Artificial Intellige…

设计模式学习[10]---迪米特法则+外观模式

文章目录 前言1. 迪米特法则2. 外观模式2.1 原理阐述2.2 举例说明 总结 前言 之前有写到过 依赖倒置原则,这篇博客中涉及到的迪米特法则和外观模式更像是这个依赖倒置原则的一个拓展。 设计模式的原则嘛,总归还是高内聚低耦合,下面就来阐述…

量化交易系统开发-实时行情自动化交易-8.4.MT4/MT5平台

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来会对于MT4/MT5平台介绍。 MetaT…