Cesium 定位到tile

实现效果

在这里插入图片描述

2 功能拆解

2.1 定位到符合条件的tile

这个比较简单,主要利用scenetree.json 来实现

    Cesium.Resource.fetchJson({
        url:'Cesium/Cesium3DTiles/tiles/scenetree.json'
    }).then(res=>{
        res.scenes[0].children.forEach(item => {
            dataLists.push({
                id:item.id,
                name: item.name,
                sphere: item.sphere,
            })
        })

    })

然后根据名称或者id 遍历数据,操作相机

  dataLists.forEach(item=>{
            if(item.name =='225'){
                    let sphere = item.sphere
                    let center = new Cesium.Cartesian3(sphere[0], sphere[1], sphere[2])
                     const boundingSphere = new Cesium.BoundingSphere(center, sphere[3])
                    viewer.camera.flyToBoundingSphere( boundingSphere, {
                        offset: new Cesium.HeadingPitchRange(3.5, -0.5, 200),
                        duration: 2,
                    })
            }
        })

2.2 修改制定tile的颜色

思路一 获取feature

  let features =[]
    tileset.tileLoad.addEventListener(tile=>{
        const content = tile._content
        let featuresLength = content.featuresLength

        for(let i =0;i<featuresLength;i++){
            let feature = content.getFeature(i)
            features.push({feature:feature,name:feature.getProperty('name'),id:feature.getProperty('id')})
        }
    })
  features.forEach((item)=>{
            if(item.name == '225' ){
              item.feature.color = Cesium.Color.fromCssColorString('#11eae6')
            }else{{
                item.feature.color = Cesium.Color.fromCssColorString('#fff').withAlpha(0.5)
            }}
        })

思路二 利用Cesium3DTileStyle

 con = [
            ['${name} ==="227" ', 'color("purple", 0.9)'], //符合条件项
            ['true', 'rgba(255,255,255,0.5)'] //其他项
        ]
        tileset.style = new Cesium.Cesium3DTileStyle({
            color:{
                conditions:con
            }
        })
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Webgiserin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值