首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
企业信息化/数字化
›
ERP
›
SAP
›
点击获取Cesium中加载的3DTile模型的属性信息(二) ...
返回列表
发新帖
点击获取Cesium中加载的3DTile模型的属性信息(二)
[复制链接]
发表于 2026-10-14 21:29:20
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
点击获取Cesium中加载的3DTile模型的属性信息(二)
【导语】本文是 Cesium 加载 3DTile 模型属性获取系列第二篇,演示如何在 Cesium 中通过交互与事件读取 3DTile 要素的属性信息:先用 viewer.screenSpaceEventHandler 注册鼠标左键点击事件,再用 viewer.scene.pick(click.position) 取到 Cesium3DTileFeature;接着用 pickedFeature.getProperty('name') 读取具体属性;并通过 tileset.tileLoad.addEventListener 监听瓦片加载、用 content.getFeature(0).getProperty('name') 批量获取要素数量与属性。
核心观点
鼠标事件:viewer.screenSpaceEventHandler.setInputAction 注册 LEFT_CLICK,在回调中编写交互逻辑
拾取要素:viewer.scene.pick(click.position) 返回 Cesium3DTileFeature,用 Cesium.defined 判断对象是否有效
读取属性:pickedFeature.getProperty('name') 按属性名(如 shp 转 3dtile 时的字段名)读取单个要素属性
瓦片级监听:tileset.tileLoad.addEventListener 监听瓦片加载,content.featuresLength 取要素数量、content.getFeature(0).getProperty('name') 取首个要素属性
适用场景
适用于 Cesium/WebGIS 三维开发、3DTile 模型交互与属性查询场景,适合 GIS 前端开发者参考。
关键信息
(技术随笔,文中鼠标拾取、getProperty 与 tileLoad 监听的完整
代码
示例及输出截图见正文
代码
块与配图。)
1.添加鼠标点击事件
//鼠标单击左键事件
viewer.screenSpaceEventHandler.setInputAction(function onMouseClick( click ) {
//自己需要写逻辑的地方
},Cesium.ScreenSpaceEventType.LEFT_CLICK);
复制
代码
2.属性信息的位置
2.1 viewer.scene.pick(click.position)
var pickedFeature = viewer.scene.pick(click.position);if(Cesium.defined(pickedFeature)){
console.log(pickedFeature);
}
复制代码
Cesium.defined(value) 经常使用,用于判断object是否define
复制代码
pickedFeature长这样: 类型是 Cesium3DTileFeature<br>
复制代码
自然而然在
文档
里去找,找到了getProperty方法
参数name也是就我们需要属性的名字,对应上一篇随笔中shp转3dtile时候shp的属性名称
输出看一下
console.log(pickedFeature.getProperty("name"));
复制代码
复制代码
成功
2.2 tileset.tileLoad.addEventListener
Cesium3DTileset中有一个事件:tileLoad
输出一下tile看看是什么
tileset.tileLoad.addEventListener(function(tile) {
console.log(tile);
})<br>
复制代码
里面有个content属性,截图没截出来,输出看看
看看
文档
注意到有个方法getFeature,返回值是Cesium3DTileFeature类型,是不是和2.1一样,那就简单了
tileset.tileLoad.addEventListener(function(tile) {
let featuresLength = content.featuresLength;
console.log("要素数量为:");
console.log(featuresLength);
console.log("第一个要素属性为:");
let feature = content.getFeature(0).getProperty("name");
console.log(feature);
})
复制代码
回复
使用道具
举报
返回列表
浏览过的版块
物联网
DevOps与敏捷开发
饭宝
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表