cesium从头开始一个项目-无人机飞行-3-初始化位置/设置初始视角

2021年11月14日

目标效果是这样的

 即我们希望运行代码加载过后,视角不再是一整个地球,而是我们场景发生的地方

这里我选择的是北京故宫

前几天北京下雪了,雪后的故宫是真好看

不会的函数一定要去查文档!

比较简单 直接上代码

var Beijing = Cesium.Cartesian3.fromDegrees(116.3875,39.9009,900) 
var BeijingX = Beijing.x
var BeijingY = Beijing.y
var BeijingZ = Beijing.z

viewer.camera.flyTo({ //设置为北京上空
    destination:{
        x: BeijingX,
        y: BeijingY,
        z: BeijingZ
    },
     orientation:{ 
         heading: 0.3884413259732771, //旋转角 正东为90°
         pitch: Cesium.Math.toRadians(-45), //俯仰角,水平为0°
         roll: 0.0014112073156402616     //翻滚角
        },
     duration:2,
         complete:function () {
         viewer.animation.viewModel.pauseViewModel.command(); // 到达位置后执行的回调函数
    },
});    

由于一个地点的经纬度比较好确定,直接百度查就可以得到

所以我们使用Cesium.Cartesian3.fromDegrees()

来讲经纬度转化为笛卡尔坐标系的坐标值

然后使用viewer.camera.flyTo(),将视角固定在此位置上

不过假如我们想要的点的经纬度在百度上查不到怎么办

利用下面的代码就好了

//以下三行为html
//获取id为''的对象
var longitude_show=document.getElementById('longitude_show');
var latitude_show=document.getElementById('latitude_show');
var altitude_show=document.getElementById('altitude_show');
//获取画布
var canvas=viewer.scene.canvas;
//具体事件的实现
var ellipsoid=viewer.scene.globe.ellipsoid;
var handler = new Cesium.ScreenSpaceEventHandler(canvas);
handler.setInputAction(function(movement){
//捕获椭球体,将笛卡尔二维平面坐标转为椭球体的笛卡尔三维坐标,返回球体表面的点
    var cartesian=viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
    if(cartesian){
        //将笛卡尔三维坐标转为地图坐标(弧度)
        var cartographic=viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);
//将地图坐标(弧度)转为十进制的度数
        var lat_String=Cesium.Math.toDegrees(cartographic.latitude).toFixed(4);
        var log_String=Cesium.Math.toDegrees(cartographic.longitude).toFixed(4);
        var alti_String=(viewer.camera.positionCartographic.height/1000).toFixed(2);
        longitude_show.innerHTML=log_String;
        latitude_show.innerHTML=lat_String;
        altitude_show.innerHTML=alti_String;
    }
},Cesium.ScreenSpaceEventType.MOUSE_MOVE);

当我的鼠标悬停在鸟蛋上方时,其信息就可以实时显示出来了

continue

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值