cesium获取3dtiles数据的json中每一个tile的数据信息

今天算是找到了两个方法吧。

一.通过tileVisible添加事件

首先添加tileset数据

let tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
            url:"", //自己的数据路径
            maximumScreenSpaceError: 2, //最大的屏幕空间误差
            maximumNumberOfLoadedTiles: 1000, //最大加载瓦片个数
            // debugShowBoundingVolume: true,  // 显示包围盒
        }));

然后添加监听事件

tileset.tileVisible.addEventListener(function(tile){
            viewer.entities.add({
                position: new Cesium.Cartesian3(tile.boundingSphere.center.x, tile.boundingSphere.center.y, tile.boundingSphere.center.z + 25),
                point: { pixelSize: 10, color: Cesium.Color.RED },
                label: {
                    show: true,
                    font: '15px sans-serif',
                    text: "瓦片中心x为:" + tile.boundingSphere.center.x + ",瓦片中心y为:" + tile.boundingSphere.center.y + ",瓦片中心z为:" + tile.boundingSphere.center.z,
                    distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 20),
                    // disableDepthTestDistance: 100.0,
                    // scaleByDistance: new Cesium.NearFarScalar(10, 1, 1000, 0.0),
                    // translucencyByDistance: new Cesium.NearFarScalar(10, 1, 1000, 0.0)
                }
            });



        })

原本想要实现在加载的每个模型旁边添加一个lable来说明模型的大致的位置,可是这种方法会导致很严重的掉帧和网页的卡顿,然后cesium官方也不建议这样做,但是确实可以获得每一个tile的信息。

二.从3dtileset的属性中获取

我查看了Cesium3DTileset 的属性信息,然后再里面看到了这个东西。

在这里插入图片描述
可以通过这个属性来获取每一个tile的信息。

 function myTestDemo02() {
        let selectedTiles = tileset._selectedTiles;
        console.log("selectedTiles为:")
        console.log(selectedTiles)
        console.log(selectedTiles[0])
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值