Cesium中3Dtiles模型的信息读取和高亮显示单独瓦片

ops/2024/11/14 14:06:56/

一、信息读取

参考官方文档:Csium3DTileset - Cesium Documentation

加载模型

var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: 'tileset.json'//加载3D Tiles}));

 在使用过程中可以通过在控制台输出对象后看一下对象的类型然后上官方文档看去,文档很全

有两种方法获取所有瓦片

1.官方提供的渲染结束后的监听器,可以直接返回一个tile对象

//加载完瓦片之后再显示按钮     

javascript">   tileset.tileLoad.addEventListener(function (tile) {//这里和下边的操作一样})

 2.直接获取tileset的属性

这种方法适合写成函数,可以根据自己想要的时间来触发

javascript">function func() {tile = tileset.root//和渲染后返回的一样let featuresLength = tile.content.featuresLength;let feature = tile.content.getFeature(0).getProperty("Type");//这里是第一个瓦片的Type属性,如果不知道有哪些属性可以用下边代码输出所有属性// var propertyNames = pickedFeature.getPropertyNames();// var length = propertyNames.length;// for (var i = 0; i < length; ++i) {//     var propertyName = propertyNames[i];//     console.log(propertyName + ': ' + pickedFeature.getProperty(propertyName));// }}

瓦片的id属性有两个一个是_batchId,一个是pickId.key,我的模型中这俩值不一样,不知道为什么。但是在未点击的时候pickId是空的,所以我默认把_batchId作为数据库中的主键 

二、高亮显示单个或指定瓦片 

先设置一个高亮瓦片的变量,下边两种共用

javascript">var highlighted = { feature: undefined, originalColor: new Cesium.Color() };

 1.鼠标点击后高亮显示

添加鼠标点击事件监听器

javascript">// 鼠标点击事件处理函数var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);handler.setInputAction(function (click) {// 将屏幕坐标转换为笛卡尔坐标var pickedFeature = viewer.scene.pick(click.position);//当未捕捉到要素的时候if (!Cesium.defined(pickedFeature)) {//取消所有高亮显示if (Cesium.defined(highlighted.feature)) {highlighted.feature.color = highlighted.originalColor;highlighted.feature = undefined;}return;}else {//高亮显示if (Cesium.defined(highlighted.feature)) {highlighted.feature.color = highlighted.originalColor;highlighted.feature = undefined;}highlighted.feature = pickedFeature;Cesium.Color.clone(pickedFeature.color, highlighted.originalColor);pickedFeature.color = Cesium.Color.LIME.withAlpha(0.5);showMessage('您选择Id为:' + pickedFeature.pickId.key + 'Type属性为:' + pickedFeature.getProperty('Type'));}}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

2.鼠标移动过程中跟随高亮

添加屏幕移动事件监听器

javascript">//鼠标移动跟随高亮handler.setInputAction(function onMouseMove(movement) {// 将屏幕坐标转换为笛卡尔坐标var pickedFeature = viewer.scene.pick(movement.endPosition);//当未捕捉到要素的时候if (!Cesium.defined(pickedFeature)) {//取消所有高亮显示if (Cesium.defined(highlighted.feature)) {highlighted.feature.color = highlighted.originalColor;highlighted.feature = undefined;}return;}else {//高亮显示if (Cesium.defined(highlighted.feature)) {highlighted.feature.color = highlighted.originalColor;highlighted.feature = undefined;}highlighted.feature = pickedFeature;Cesium.Color.clone(pickedFeature.color, highlighted.originalColor);pickedFeature.color = Cesium.Color.LIME.withAlpha(0.5);}}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

showMessage是js+css写的简易提示消息,可以看这个博客

js+css消息提示框-CSDN博客【代码】js+css消息提示框。https://blog.csdn.net/vener_/article/details/143764044


http://www.ppmy.cn/ops/133584.html

相关文章

英语中go do sth和come do sth的区别

1. "Come do something" 语法结构 结构&#xff1a;主语 come 动词原形 其他成分。用法&#xff1a;表示某人来到说话者的位置或某个地方&#xff0c;然后做某事。 例句 Come play with us.&#xff08;过来和我们一起玩。&#xff09;Come help me with this…

github高分项目 WGCLOUD - 运维实时管理工具

GitHub - tianshiyeben/wgcloud: Linux运维监控工具&#xff0c;支持系统硬件信息&#xff0c;内存&#xff0c;CPU&#xff0c;温度&#xff0c;磁盘空间及IO&#xff0c;硬盘smart&#xff0c;GPU&#xff0c;防火墙&#xff0c;网络流量速率等监控&#xff0c;服务接口监测&…

Prettier - Code formatter插件使用(前端美化插件)

一&#xff0c;安装 vscode直接搜索 安装完毕后 二&#xff0c;配置 Prettier&#xff1a; 安装完插件后&#xff0c;打开 VSCode 的设置&#xff08;快捷键是 Ctrl ,&#xff09;。在搜索框中输入 Format On Save&#xff0c;找到并勾选“Editor: Format On Save”选项&am…

11. 盛最多水的容器

目录 题目过程 题目 过程 class Solution { public:int maxArea(vector<int>& height) {int l0,rheight.size()-1;int v0;//用于存储容器最大值while(l<r){if(height[l]<height[r]){vmax(v,height[l]*(r-l));}else{vmax(v,height[r]*(r-l));}}return v;} };用…

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战

目录 前言 一、原始的处理办法 1、使用Set方法来转换 2、使用构造方法转换 二、基于ModelMapper的动态转换 1、ModelMapper简介 2、集成到项目中 3、Shapefile属性读取 三、总结 前言 在现代软件开发中&#xff0c;尤其是在多层架构中&#xff0c;经常需要将数据从一个…

React第一个项目

运行效果&#xff1a; 知识讲解&#xff1a; 组件&#xff1a;先定义后使用&#xff0c;用户界面的构成要素&#xff08;标签、css和JavaScript&#xff09; 定义组件&#xff1a; 导出组件&#xff1a;export default 前缀是JavaScript标准语法 定义函数&#xff1a;function …

《基于Oracle的SQL优化》读书笔记

查看执行计划set autotrace traceonly explain在当前session中将优化器模式改为RULE。alter session set optimizer_modeRULE;统计信息存储在oracle的数据字典里&#xff0c;且从多个维度描述了oracle数据库里相关对象的实际数据量&#xff0c;实际数据分布等详细信息。 -- 对…

elementUI input 禁止内容两端存在空格,或者是自动去除两端空格

需求 项目中有需求&#xff1a;输入框中禁止内容两端存在空格&#xff0c;或者是自动去除两端空格。 解决方法 vue的api文档中有过介绍&#xff0c;使用.trim可以去掉用户输入内容中两端的空格&#xff0c;如下图 代码 <el-input v-model.trim"name" cleara…