Cesium 自定義Primitive-線

一、創作思路

? ? ? ? 1、創建一個自定義CustomPrimitive

? ? ? ? 2、可動態更新線的點位

? ? ? ? 3、方便后期繪制線

二、實現代碼

? ? ? ? 1、創建一個CustomPolylinePrimitive類,并加入更新的代碼

export default class CustomPolylinePrimitive {constructor(options) {this._props = options;/*** 渲染列表* @type {*[]}* @private*/this._primitiveCollection = [];this._dynamicPrimitive = undefined;}updateProperty(options) {this._props = {...this._props,...options,};}/*** 更新* @param frameState*/update(frameState) {this._primitiveCollection.forEach((primitive) => {primitive && !primitive.isDestroyed() && primitive.update(frameState);});if (this._dynamicPrimitive) {this._dynamicPrimitive.update(frameState);}}
}

? ? ? ? 2、編寫更新代碼

updateProperty(options) {this._props = {...this._props,...options,};let positions = this._props.positions;let complete = this._props.complete;if (positions.length > 1) {let dynamicPrimitive = this._dynamicPrimitive;if (dynamicPrimitive) {dynamicPrimitive.destroy();dynamicPrimitive = null;this._dynamicPrimitive = null;}let primitive = this.initPolylinePrimitive(positions);if (complete) {this._primitiveCollection.push(primitive);} else {this._dynamicPrimitive = primitive;}}}initPolylinePrimitive(positions) {let instance = new GeometryInstance({geometry: new GroundPolylineGeometry({positions: positions,width: 4,}),});return new GroundPolylinePrimitive({geometryInstances: instance,appearance: new PolylineMaterialAppearance({material: new Material({fabric: {type: "Color",uniforms: {color: Color.fromCssColorString("#ff0000"),},},}),}),asynchronous: false,});}

? ? ? ? 3、測試代碼,自定義動態更新點位

viewer.camera.flyTo({destination: origin2,complete: () => {let primitive = new CustomPolylinePrimitive({});viewer.scene.primitives.add(primitive);let count = 0;let lon = 106;let lat = 26;let positions = [];let interval = setInterval(() => {let lonTemp = lon + count * 0.00001;let latTemp = lat + (count % 2) * 0.00001;positions.push(Cartesian3.fromDegrees(lonTemp, latTemp));primitive.updateProperty({positions: positions,complete: count === 11,});if (count > 10) {clearInterval(interval);}count++;}, 1000);},});

三、實現效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711841.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711841.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711841.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EchoServer回顯服務器封裝與測試

目錄 類實現 編譯測試 這一篇本質上是為了TcpServer而做的一層封裝,讓外界調用更加簡潔 參考上文 TcpServer服務器管理模塊(模塊十)-CSDN博客 類實現 echo.hpp #include "../server.hpp"class EchoServer { private:TcpServer _server;private:void OnConnect…

貝葉斯分類器

貝葉斯分類器 1. 引言 貝葉斯分類器是一種基于貝葉斯定理的分類算法,它利用特征之間的關系和類別的先驗概率來進行分類。貝葉斯分類器在文本分類、垃圾郵件過濾、醫學診斷等領域有著廣泛的應用。 貝葉斯分類算法是統計學的一種分類方法,是一類利用概率…

vite打包構建時環境變量(env)生成可配置的js文件

現實需求 在vite開發過程中,一些變量可以放在.env(基礎公共部分變量).env.dev(開發環境)、.env.production(生產環境)中管理,通常分成開發和生產兩個不同的配置文件管理&#xff0c…

方法區的垃圾收集

方法區的垃圾收集 主要回收兩部分內容廢棄的常量和不再使用的類型 廢棄的常量: 假如一個字符串“java”曾經進入常量池中,但是當前系統又沒有任何一個字符串對象的值是“java”,換句話說,已經沒有任何字符串對象引用常量池中的“…

三天學會阿里分布式事務框架Seata-應用seata AT模式方案解決分布式事務問題

鋒哥原創的分布式事務框架Seata視頻教程: 實戰阿里分布式事務框架Seata視頻教程(無廢話,通俗易懂版)_嗶哩嗶哩_bilibili實戰阿里分布式事務框架Seata視頻教程(無廢話,通俗易懂版)共計10條視頻&…

dolphinscheduler海豚調度(四)釘釘告警

在之前的博文中,我們已經介紹了DolphinScheduler海豚調度的基本概念和工作流程,以及Shell任務和SQL任務的實踐。今天,讓我們來學習DolphinScheduler中的另一個重要功能:釘釘告警。 釘釘群添加機器人 在釘釘群添加機器人&#xf…

SpringBoot 使用@Async 注解實現異步任務

前言 在現代應用程序中,異步編程已經成為了必備的技能。異步編程使得應用程序可以同時處理多個請求,從而提高了應用程序的吞吐量和響應速度。在 SpringBoot 中,我們可以使用 Async 注解來實現異步編程。本文將介紹 Async 注解的使用方法和注…

從http到websocket

閱讀本文之前,你最好已經做過一些websocket的簡單應用 從http到websocket HTTP101HTTP 輪詢、長輪詢和流化其他技術1. 服務器發送事件2. SPDY3. web實時通信 互聯網簡史web和httpWebsocket協議1. 簡介2. 初始握手3. 計算響應健值4. 消息格式5. WebSocket關閉握手 實…

Redis 緩存數據庫

redis 中文網 http://www.redis.cn/ redis.net.cn 兩種數據庫陣營 1.關系型數據庫 MySQL Oracle DB2 SQL Server 等基于二維表結構存儲數據的文件型磁盤數據庫 缺點: 因為數據庫的特征是磁盤文件型數據庫, 就造成每次查詢都有IO操作, 海量數據查詢速度較慢 2.NoSQL數據庫 …

C++中的常對象、常函數

一、常對象的概念 常對象就是用 const 修飾的對象,常對象必須初始化且不可被修改。 //以日期類對象為例 const Date d1(2004, 5, 25); 二、常對象只能調用常函數 常對象只能調用常函數,不能調用其他函數。 以日期類為例,類中有成員函數P…

lv20 QT 常用控件 2

1 QT GUI 類繼承簡介 布局管理器 輸出控件 輸入控件 按鈕 容器 2 按鈕示例 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QCheckBox> #include <QLineEdit> #include <QPushButton>class Widget : public QWidget {Q_OBJECTpublic…

SLAM面試代碼題:點云去畸變

題目 假設已知一幀點云每個點的時間戳和它的位姿,要求對點云去畸變 解題思路 定義一個點云的struct利用時間戳,把一幀內每個時刻的點云都變換到這一幀的起始時間處位置使用線性插值,旋轉使用球面非線性插值// 點云去畸變 #include <iostream> #include <Eigen/Co…

擊鼓傳花游戲

有N個小朋友圍成一圈玩擊鼓傳花游戲&#xff0c;將小朋友編號為1-N&#xff0c;從1號開始傳花&#xff0c;每次傳3個&#xff0c;拿到花的小朋友表演節目后退出。任給N&#xff0c;問最后一個表演的小朋友編號是多少&#xff1f;例如&#xff1a;輸入5&#xff0c;從1號開始傳花…

基于springboot+vue的共享汽車管理系統(前后端分離)

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

Linux中的echo命令

echo?命令是在Linux系統中常用的用于輸出文本或變量內容的命令。它可以將指定的文本或變量的值輸出到終端上。下面是關于 ?echo?命令的使用說明和示例&#xff1a; 1. 基本語法&#xff1a; echo [選項] [字符串或變量] 2. 使用示例&#xff1a; 輸出文本內容&#xff1…

3d模型版本轉換器注意事項---模大獅模型網

在使用3D模型版本轉換器時&#xff0c;有一些注意事項可以幫助您順利完成模型轉換并避免不必要的問題&#xff1a; 數據完整性&#xff1a;在進行模型轉換之前&#xff0c;確保您的原始3D模型文件沒有損壞或缺失數據。損壞的文件可能導致轉換器無法正常處理或輸出錯誤的結果。 …

力扣經典題目解析--滑動窗口最大值

原題地址: . - 力扣&#xff08;LeetCode&#xff09; 給你一個整數數組 nums&#xff0c;有一個大小為 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。 返回 滑動窗口中的最大值 。 示例 1&#xff1a;…

小程序自定義組件

自定義組件 1. 創建-注冊-使用組件 組件介紹 小程序目前已經支持組件化開發&#xff0c;可以將頁面中的功能模塊抽取成自定義組件&#xff0c;以便在不同的頁面中重復使用&#xff1b; 也可以將復雜的頁面拆分成多個低耦合的模塊&#xff0c;有助于代碼維護。 開發中常見的…

111790-37-5 ,生物素-氨基,一種生物素化合物,可與-NHS、-COOH反應

您好&#xff0c;歡迎來到新研之家 文章關鍵詞&#xff1a;111790-37-5 &#xff0c;生物素-氨基&#xff0c;生物素氨基&#xff0c;Biotin-NH2&#xff0c;Biotin-amine 一、基本信息 【產品簡介】&#xff1a;Biotin-NH2 provides a convenient biotinylation method for…

OSCP靶場--DVR4

OSCP靶場–DVR4 考點(1.windows&#xff1a;路徑遍歷獲取私鑰getshell 2.ssh shell中runas切換用戶) 1.nmap掃描 ┌──(root?kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.161.179 --min-rate 2000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-29 07:14 EST…