Cesium中實現圖層組

圖層組

某天領導找我,說業務中可能存在多個影像服務為一個圖層組,并且需要同時加載和同時在圖層列表中上下移動的需求。

例如一些專題地圖,包含所有學校、醫院、公交站等圖層,而這些圖層都是單獨發布的。

在 Cesium 中確實存在一個圖層組 ImageryLayerCollection 。但是可以發現 ImageryLayerCollectionPrimitiveCollection 不同,雖然兩者都會在 Cesium 初始化時創建一個默認的對象,但是 PrimitiveCollection 可以嵌套使用而 ImageryLayerCollection 不行

Cesium 不能添加圖層組其實對同時加載多個圖層影響不大,但是如果需要在圖層樹中移動位置,就比較復雜了。領導說項目人員很頭疼,速速解決。

實現思路

既然原生的 ImageryLayerCollection 只接受 ImageryLayer 作為子對象。那寫一個能夠管理多個服務的 ImageryLayer 不就行了嗎。

為了不動 Cesium 源碼,可以直接拷貝一份 ImageryLayer.js 到外面修改實現圖層組。

其實 ImageryLayer.js 中做的東西并不算復雜,上級的地形四叉樹在渲染時,會為每塊地形瓦片查找他的貼圖(附著在地形上的影像),這一步操作最終會進入到 _createTileImagerySkeletons 方法,然后就是請求瓦片和判斷是否需要重投影的操作。具體可以參考最復雜的地球皮膚 影像與地形的渲染與下載過程

只是 ImageryLayer.js 中只對一個 imageryProvider 進行管理和操作。那需要做的其實只是把管理一個 imageryProvider 改成管理多個而已。

成果檢驗

在這里插入圖片描述

測試代碼中創建了三個圖層。為了測試對不同 imageryProvider 的統一管理是否能夠成功實現,因此特地混用了影像服務的切片方案。

bingMapsAerialWithLabels 切片方案為 WebMercatorTilingScheme 而 其余兩個服務切片方案為 GeographicTilingScheme

在這里插入圖片描述

觀察 viewer.scene.imageryLayers 中的內容可以發現,成功使用一個 imageryLayer 加載了三個服務

繼續拓展

由于目前圖層組管理的是多個imageryProvider,而不是多個 imageryLayer, 因此實際上只能做到一層嵌套,也就是圖層組里面只能放圖層,而不能放圖層組。

由于目前已經能滿足項目需求,因此就懶得再搞下去了😅

其實要解決也簡單,再封裝一個管理 ImageryLayer 的 ImageryLayer 就行了。

原文鏈接

Cesium中實現圖層組

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

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

相關文章

前端與嵌入式開發通信之QWebChannel(Qt)

前端與嵌入式開發通信之QWebChannel 最近開發中需要用到和c開發的操作臺進行通信的的需求,就找到了這個技術,記錄一下 首先需要安裝導入 qwebchannel npm i qwebchannel import { QWebChannel } from "qwebchannel"; 初始化qwebchannel并封…

myeclipse開發ssm框架項目圖書管理系統 mysql數據庫web計算機畢業設計項目

摘 要 隨著計算機的廣泛應用,其逐步成為現代化的標志。圖書館的信息量也會越來越大,因此需要對圖書信息、借書信息、還書信息等進行管理,及時了解各個環節中信息的變更,要對因此而產生的單據進行及時的處理,為了提高高…

vue3 兩個組件之間傳值

Props 父組件可以通過 props 將數據傳遞給子組件。這是最常見的組件間通信方式 <!-- 父組件 --><template><ChildComponent :message"parentMessage" /></template><script>import ChildComponent from ./ChildComponent.vue;export…

Linux-shell編程入門基礎

文章目錄 前言Shell編程bash特性shell作用域變量環境變量$特殊變量$特殊狀態變量 $特殊符號(很重要)其他內置shell命令shell語法的子串截取統計 指令執行時間練習shell特殊擴展變量父子shell的理解內置和外置命令區別 數值計算雙括號(())運算letexprexpr模式匹配 bcawk中括號 s…

MySQL InnoDB事務隔離的幾種級別

MySQL InnoDB是一種支持事務的存儲引擎&#xff0c;提供了多種事務隔離級別&#xff0c;分別是&#xff1a;讀未提交&#xff08;READ UNCOMMITTED&#xff09;&#xff0c;讀已提交&#xff08;READ COMMITTED&#xff09;&#xff0c;可重復讀&#xff08;REPEATABLE READ&am…

數據結構(Java):Stack相關OJ習題

1、括號匹配問題 . - 力扣&#xff08;LeetCode&#xff09; 1.1 思路分析 根據棧的先進后出原則&#xff0c;我們可以這樣解決問題&#xff1a; 遍歷字符串&#xff0c;遇見左括號就將左括號push入棧&#xff1b;遇見右括號就pop出棧&#xff0c;將出棧的元素和該右括號比較…

最簡單的vue3組件之間傳值

localStorage 是 HTML5 引入的一個 Web Storage API 的一部分&#xff0c;它允許網頁在用戶的瀏覽器上存儲數據。localStorage 提供了一種持久化的本地存儲方案&#xff0c;數據不會因為瀏覽器關閉而丟失&#xff0c;除非用戶或腳本顯式地刪除它們。 localStorage 是一種非常實…

批量提取網頁表格內容至excel文件

問題背景 將網頁的表格內容&#xff08;5237個股票信息&#xff09;復制粘貼到excel文件中 網址&#xff1a;A股上市公司名單-A股上市公司名錄-A股上市公司大全-商業計劃書-可研報告-中商產業研究院數據庫-中商情報網 實現代碼 # 導入包 import pandas as pd import time# 創…

Android中為什么不直接activity調用到view,使用viewrootimpl去與底層溝通,而要追加一個phonewindow來管理呢?

在Android的架構設計中&#xff0c;Activity、PhoneWindow 和 ViewRootImpl 各自扮演著不同的角色&#xff0c;它們之間的協作是為了實現一個更加靈活、可擴展和易于管理的UI系統。不直接從Activity調用到View&#xff0c;而是引入PhoneWindow來管理&#xff0c;主要有以下幾個…

超越傳統:3D生物打印如何利用擴散創造奇跡?

超越傳統&#xff1a;3D生物打印如何利用擴散創造奇跡&#xff1f; 組織工程和再生醫學領域迫切需要能夠模擬人體組織結構和功能的體外模型和組織替代物。然而&#xff0c;傳統的體外模型和組織替代物往往難以滿足高度特異性、復雜性和功能性的要求。3D生物打印技術應運而生&a…

Base64文件流查看下載PDF方法-CSDN

問題描述 數票通等接口返回的PDF類型發票是以Base64文件流的方式返回的&#xff0c;無法直接查看預覽PDF發票&#xff0c; 處理方法 使用第三方在線工具&#xff1a;https://www.jyshare.com/front-end/61/ 在Html代碼框中粘貼如下代碼 <embed type"application/pd…

技術開發分享:商品詳情APP原數據實時接口代碼解析

商品詳情app端原數據實時接口代碼解析主要包括以下幾個步驟&#xff1a; 獲取商品ID&#xff1a;首先需要從淘寶的分享鏈接中提取商品ID&#xff0c;可以通過正則表達式匹配的方式獲取。 構建請求URL&#xff1a;根據商品ID構建請求URL&#xff0c;通常包括淘寶的商品詳情API地…

未來互聯網的新篇章:深度解析Web3技術

隨著技術的不斷演進&#xff0c;Web3正逐漸成為引領未來互聯網發展的關鍵驅動力。本文將深入探討Web3技術的核心概念、關鍵特征以及其對未來互聯網生態的深遠影響&#xff0c;旨在幫助讀者全面理解和把握這一新興技術的發展方向和潛力。 1. Web3的基本概念和演進 Web3并非簡單…

為什么鍵盤上F和J這兩個鍵有兩個凸起的橫線呢?

不知道小伙伴們有沒有注意過&#xff0c;我們常用的電腦鍵盤上&#xff0c;為什么F和J這兩個鍵總是有兩個凸起的橫線的呢&#xff1f; 首先&#xff0c;讓我們來回顧一下這位陪伴我們多年的老朋友——鍵盤。從最初的打字機到現在的機械鍵盤、薄膜鍵盤&#xff0c;鍵盤的形態和…

新書速覽|Vue.js 3.x+Express全棧開發:從0到1打造商城項目

《Vue.js 3.xExpress全棧開發&#xff1a;從0到1打造商城項目》 1 本書內容 《Vue.js 3.xExpress全棧開發 : 從0到1打造商城項目》是一本詳盡的全棧開發教程&#xff0c;旨在通過Vue.js和Express框架引導讀者從零開始構建一個完整的電商項目。內容覆蓋電商項目的基本結構&…

C++——map和set類用法指南

一、前言 1.1 關聯式容器 關聯式容器也是用來存儲數據的&#xff0c;與序列式容器不同的是&#xff0c;其里面存儲的是<key,value>結構的鍵值對&#xff0c;在數據檢索時比序列式容器效率更高。 1.2 鍵值對 用來表示具有一一對應關系的一種結構&#xff0c;該結構中一般…

編程入門題:畫矩形(C語言版)

1.題目描述&#xff1a; 根據輸入的四個參數:a,b,c,f參數&#xff0c;畫出對應的矩形。前兩個參數 a,b為整數&#xff0c;依次代表矩形的高和寬:第三個參數c是一個字符&#xff0c;表示用來填充的矩形符號第四個參數 f為整數&#xff0c;0 代表空心&#xff0c;否則代表實心。具…

Redis如何高效實現定時任務

寫在文章開頭 redis通過單線程結合非阻塞事件輪詢機制實現高效的網絡IO和時間事件處理&#xff0c;這篇文章我們將從源碼的角度深入分析一下redis時間事件的設計與實現。 Hi&#xff0c;我是 sharkChili &#xff0c;是個不斷在硬核技術上作死的 java coder &#xff0c;是 CS…

項目三層架構詳情

三層架構 三層架構就是為了符合“高內聚&#xff0c;低耦合”思想&#xff0c;把各個功能模塊劃分為表示層&#xff08;UI&#xff09;、業務邏輯層&#xff08;BLL&#xff09;和數據訪問層&#xff08;DAL&#xff09;三層架構&#xff0c;各層之間采用接口相互訪問&#xf…

(正向)代理 vs. 反向代理

&#xff08;正向&#xff09;代理 vs. 反向代理 代理和反向代理都是針對用戶而言的。 一、&#xff08;正向&#xff09;代理——代理客戶端 1. 流程 代理會隱藏客戶端的真實信息&#xff08;IP、端口&#xff09;&#xff0c;代替客戶端在互聯網上發起請求&#xff0c;并將…