cesium 展示glb数据

本文介绍如何使用Cesium JavaScript库加载3D模型并进行精确的地理空间定位。通过xyz坐标直接放置3D模型,无需转换为经纬度,并提供了一种方法来调整模型的方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据有两个文件

.glb文件

.json 文件

 

这个shpere 中一共有4各参数

0:x, 1:y, 2:z 3:半径 

 xyz 转换成经纬度和高度

getjwd(x, y, z) {
        const ellipsoid = this.$cesiumViewer.scene.globe.ellipsoid
        const cartesian3 = new Cesium.Cartesian3(x, y, z)
        const cartographic = ellipsoid.cartesianToCartographic(cartesian3)
        const lat = Cesium.Math.toDegrees(cartographic.latitude)
        const lon = Cesium.Math.toDegrees(cartographic.longitude)
        const alt = cartographic.height
        return {
          lon,
          lat,
          alt,
        }
      },

 加载glb数据


      add3DEntityModel(‘glb地址’,‘经度’,‘纬度’,‘高度’,v_heading,v_pitch,v_roll)

      add3DEntityModel(uri,longitude,latitude,height,v_heading,v_pitch,v_roll) {
        this.$cesiumViewer.entities.removeAll();
        //位置(弧度单位)
        var position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height);
        var heading = Cesium.Math.toRadians(v_heading);
        var pitch = Cesium.Math.toRadians(v_pitch);
        var roll = Cesium.Math.toRadians(v_roll);
        var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);

        //朝向(弧度单位)
        var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);
        var entity = this.$cesiumViewer.entities.add({
            name : uri,
            description:"<div><p>这是一个飞机!</div>", // 这是模型的描述属性,可以是html标签
            position : position,
            orientation : orientation,
            model : {
                uri : uri,
                minimumPixelSize : 128,
                maximumScale : 20000
            }
        });
      //取或设置相机当前正在跟踪的Entity实例。
       //this.$cesiumViewer.trackedEntity = entity;
      }

可以直接使用他的xyz 不需要转

这个数据会转成xyz ,所以可以将position换成

 

add3DEntityModel(uri,xyz,v_heading,v_pitch,v_roll) {
        this.$cesiumViewer.entities.removeAll();
        //位置(弧度单位)
        var position ={
            x:xyz.x,y:xyz.y,z:xyz.z,
        }
        var heading = Cesium.Math.toRadians(v_heading);
        var pitch = Cesium.Math.toRadians(v_pitch);
        var roll = Cesium.Math.toRadians(v_roll);
        var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);

        //朝向(弧度单位)
        var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);
        var entity = this.$cesiumViewer.entities.add({
            name : uri,
            description:"<div><p>这是一个飞机!</div>", // 这是模型的描述属性,可以是html标签
            position : position,
            orientation : orientation,
            model : {
                uri : uri,
                minimumPixelSize : 128,
                maximumScale : 20000
            }
        });
      //取或设置相机当前正在跟踪的Entity实例。
       //this.$cesiumViewer.trackedEntity = entity;
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

侧耳倾听...

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

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

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

打赏作者

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

抵扣说明:

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

余额充值