点击获取Cesium中加载的3DTile模型的属性信息(二)

打印 上一主题 下一主题

主题 827|帖子 827|积分 2481

1.添加鼠标点击事件
  1.     //鼠标单击左键事件
  2.     viewer.screenSpaceEventHandler.setInputAction(function onMouseClick( click ) {
  3.     //自己需要写逻辑的地方
  4.       
  5.     },Cesium.ScreenSpaceEventType.LEFT_CLICK);
复制代码
 
2.属性信息的位置

2.1 viewer.scene.pick(click.position)
  1.       var pickedFeature = viewer.scene.pick(click.position);if(Cesium.defined(pickedFeature)){
  2.         console.log(pickedFeature);
  3.       }
复制代码
  1. Cesium.defined(value) 经常使用,用于判断object是否define
复制代码
  1. pickedFeature长这样: 类型是 Cesium3DTileFeature<br><img src="https://img2023.cnblogs.com/blog/3074311/202301/3074311-20230107150916984-1888697950.png" alt="" loading="lazy">
复制代码
 
 自然而然在文档里去找,找到了getProperty方法

 
 参数name也是就我们需要属性的名字,对应上一篇随笔中shp转3dtile时候shp的属性名称
输出看一下
  1. console.log(pickedFeature.getProperty("name"));
复制代码
  1.  <img src="https://img2023.cnblogs.com/blog/3074311/202301/3074311-20230107151233207-475221451.png" alt="" loading="lazy">
复制代码
 成功
 
2.2 tileset.tileLoad.addEventListener

Cesium3DTileset中有一个事件:tileLoad

 
 
输出一下tile看看是什么
  1.     tileset.tileLoad.addEventListener(function(tile) {
  2.       console.log(tile);
  3.     })<br>
复制代码
 

 
 
里面有个content属性,截图没截出来,输出看看

 
 看看文档

 
 
注意到有个方法getFeature,返回值是Cesium3DTileFeature类型,是不是和2.1一样,那就简单了

 
 
  1.     tileset.tileLoad.addEventListener(function(tile) {
  2.       let featuresLength = content.featuresLength;
  3.       console.log("要素数量为:");
  4.       console.log(featuresLength);
  5.       console.log("第一个要素属性为:");
  6.       let feature = content.getFeature(0).getProperty("name");
  7.       console.log(feature);
  8.     })
复制代码
 

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表