cesium 动态线效果

一、扩展材质

function PolylineTrailMaterial(options) {options = Cesium.defaultValue(options, Cesium.defaultValue.EMPTY_OBJECT);this._definitionChanged = new Cesium.Event();// 变量初始化this.color = Cesium.defaultValue(options.color && new Cesium.Color.fromCssColorString(options.color), Cesium.Color.RED);this.image = options.image || '';this.duration = options.duration || 1000;this.time = (new Date()).getTime();}// 材质类型PolylineTrailMaterial.prototype.getType = function (time) {return "PolylineTrail";};// 这个方法在每次渲染时被调用,result的参数会传入glsl中。PolylineTrailMaterial.prototype.getValue = function (time, result) {if (!Cesium.defined(result)) {result = {};}result.color = Cesium.Property.getValueOrClonedDefault(this.color, time, Cesium.Color.WHITE, result.color);result.image = Cesium.Property.getValueOrClonedDefault(this.image);result.time = (((new Date()).getTime() - this.time) % this.duration) / this.duration;return result;};PolylineTrailMaterial.prototype.equals = function (other) {return this === other ||other instanceof PolylineTrailMaterial && Cesium.Property.equals(this.color, other.color) && Cesium.Property.equals(this.image, other.image) && Cesium.Property.equals(this.duration, other.duration);};Object.defineProperties(PolylineTrailMaterial.prototype, {isConstant: {get: function get() {return false;}},definitionChanged: {get: function get() {return this._definitionChanged;}},color: Cesium.createPropertyDescriptor('color'),image: Cesium.createPropertyDescriptor('image'),duration: Cesium.createPropertyDescriptor('duration'),});Cesium.Material._materialCache.addMaterial("PolylineTrail", {fabric: {type: "PolylineTrail",uniforms: {color: new Cesium.Color(1, 1, 0, 1.0),image: '',duration: 1,time: 0},source:`czm_material czm_getMaterial(czm_materialInput materialInput)\n\{\n\czm_material material = czm_getDefaultMaterial(materialInput);\n\vec2 st = materialInput.st;\n\vec4 colorImage = texture2D(image, vec2(fract(st.s - time), st.t));\n\material.alpha = colorImage.a * color.a;\n\material.diffuse = color.rgb;\n\return material;\n\}`},translucent: function translucent() {return true;}});// 写到Cesium对象上,就可以像其他MaterialProperty一样使用了Cesium.Material.PolylineTrailType = 'PolylineTrail'Cesium.PolylineTrailMaterialProperty = PolylineTrailMaterial

二、调用

viewer.entities.add({name: 'polyline',polyline: {positions: Cesium.Cartesian3.fromDegreesArray([113.394743, 38.090979,113.395422, 38.091654,]),width: 10,material: new Cesium.PolylineTrailMaterialProperty({color: '#f00',image: './image/trailLinkBlue.png'})}});

 

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

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

相关文章

ubuntu用户与用户组管理

ubuntu创建新用户,并赋予root权限 在Ubuntu中,创建新用户并赋予其类似root的管理权限通常不是直接赋予其root用户身份,而是将其添加到sudo组中。这是因为Ubuntu默认禁用root账户直接登录,并鼓励通过sudo来进行管理任务。以下是创…

基于区间预测的调度方法

《基于区间预测的光伏发电与蓄电池优化调度方法》 为了应对县级市光伏发电与用电需求之间的最优调度问题,提出一种面向蓄电池和光伏发电机的区间预测调度优化方法。该方法分别对发电功率调度、充电/放电功率调度和荷电状态调度进行决策从而获得最优调度的精确范围。…

Python Flask Web框架快速入门

Flask 入门Demo Flask 开发环境搭建,执行如下指令: pip install flask # 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run() 核心代码剖析: 从 fla…

RTSP/Onvif视频监控平台EasyNVR如何提高匿名用户的用户名和密码安全性?

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力,能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、W…

Nginx+Lua+OpenResty(详解及使用)

一、 Nginx简介 Nginx是一个高性能的Web服务器和反向代理的软件。 Web服务器:就是运行我们web服务的容器,提供web功能,还有tomcat也提供类似的功能。 代理是软件架构和网络设计中,非常重要的一个概念。 二、Nginx的反向代理&…

flutter 谷歌的苹果系统消息推送

flutter firebase 云消息通知教程 (android-安卓、ios-苹果) Android、ReactNative、Flutter集成Firebase推送注意事项 Android:Firebase 凭据 iOS:基于 p8 令牌的 APN 连接 iOS:p12 生成证书 Flutter之对接国外推送onesignal踩坑笔记&a…

【漏洞复现】SpringBlade dict-biz SQL注入漏洞

0x01 产品简介 SpringBlade 是一个由商业级项目升级优化而来的微服务架构 采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建,完全遵循阿里巴巴编码规范。提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。 0x02 漏洞概述 SpringBlade d…

0.C++入门(专栏前言)

目录 1.什么是C 2.C的发展史 3.C的重要性 应用: 4.如何学习C 5.关于本专栏 1.什么是C 20世纪80年代,计算机界提出oop(object oriented programming:面向对象)思想,支持面向对象的程序设计应运而生。 1982年,本…

linux- Python 升级到指定版本

查看当前python是什么版本,安装在什么位置 python3 --versionwhich pythonwhich python3ls -l /usr/bin/pythonls -l /usr/bin/python3 ls -l /usr/bin/python3.10 下载并安装指定版本 wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xztar -xf Py…

ThingsBoard实战教程(十四):部件库基本JS函数API规则

前言 上一篇TB教程我们讲解了部件库的一些基本API,这些API大多是静态的变量,当如果我们要开发更为复杂的部件,还需要知道部件提供的JS 接口。 为了实现一个新的部件,我们还需要一些JavaScript让部件的功能更加强大,比如为按钮添加一个点击事件,比如监听部件的大小改变,以…

Java实现文件分片上传、大文件秒传

Java实现文件分片上传、大文件秒传,大文件如何做断点续传?JAVAWEB 文件上传及下载,JAVA大文件上传,大文件下载解决方案,JAVA实现文件分片上传并且断点续传,JAVA大文件分片上传/多线程上传功能,超…

JS-47-Node.js06-fs模块-读写文件

Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScript模块不同的是,fs模块同时提供了异步和同步的方法。 一、回顾:异步方法VS同步方法 1-1、异步方法 因为JavaScript的单线程模型,执行IO操作时&#xff…

Spring注解@ResponseBody的作用与应用场景

注解详情 ResponseBody 是 Spring MVC 中的一个注解,它的作用是将控制器中的方法返回值作为响应体(Response Body)直接返回给客户端,而不是作为视图模板(View Template)进行渲染。 在 Spring MVC 中&…

STP学习的第一篇

1.STP的基本概念:根桥 (1)STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。 (2)根桥是一个STP交换网络中的“树根”。 (3)STP开始工作后&#xf…

【C++类和对象】初始化列表与隐式类型转换

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

《C语言深度解剖》(8):一篇文章彻底学会Visual Studio 调试技巧,新手必看!

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&am…

MySQL 基础语法(2)

文章目录 创建表查看表修改表表数据插入 本文为表结构相关的基础语言库相关的基础语句 创建表 CREATE TABLE table_name ( field1 datatype comment xxx, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;CREATE TABLE&#xff1…

基于Python调用Gurobi求解器的入门文档

文章目录 1. 初识Gurobi1.1 为什么是Gurobi?1.2 Win 安装方式1.3 申请许可证2. Gurobi基本语法2.1 建立模型2.1.1 定义变量2.1.2 定义约束2.1.3 定义目标(单目标、多目标)2.2 优化求解3. 演示示例1. 初识Gurobi Gurobi 是国外一款性能领先的商业求解器。与大部分商业求解器…

C# Promise对象详解

在C#中,异步编程是一个核心概念,尤其是在需要处理I/O密集型任务或与用户界面交互的应用程序中。C#提供了多种方法来处理异步操作,其中最值得注意的是async和await关键字,以及与之相关的Task和Promise对象。在本博客中,…

NLP(2)--搭建简单的模型(nn)

前言 仅记录学习过程,有问题欢迎讨论 可能使用到的包 可以通过Anaconda直接install,不行就PIP install xxx PythonTorchTransformersScikit-learnNumpyGensimPandas 我的版本: 可以用 conda list 查看 代码 如果有包导入不进来&…