cesium位置初始化
cesium位置初始化,就是在你刚加载3d页面的时候,相机所指向的位置(或者其他一些需要初始化的地方。)
话不多说,直接上案例,有不懂的请加下面的学习群,一起讨论。
1 viewer.scene.camera.flyTo({
2 destination: new Cesium.Cartesian3.fromDegrees(118.16029, 30.15988, 29600.209),
3 orientation: {
4 heading: Cesium.Math.toRadians(0),
5 pitch: Cesium.Math.toRadians(-90),
6 roll: Cesium.Math.toRadians(0)
7 },
8 duration: 3.0
9 })
其中的flyto是你飞到某个位置的一个方法。
118.16029, 30.15988, 29600.209这三个数分别是你的经度、纬度还有高程的位置。
heading: Cesium.Math.toRadians(0),
pitch: Cesium.Math.toRadians(-90),
roll: Cesium.Math.toRadians(0) 请看下面的文档解释:
duration: 3.0这句话的意思是,你飞到这个位置所用的时间是3秒。
附带转换方法
// 假设当前模型的经纬度坐标为{114, 30, 1000} 方位角{heading: 30, pitch: 20, roll: 10} 都是角度来计算
2 // 1. 根据坐标, 方位角计算世界矩阵
3 var position = Cesium.Cartesian3.fromDegrees(114, 30, 1000);
4 var heading = Cesium.Math.toRadians(30);
5 var pitch = Cesium.Math.toRadians(20);
6 var roll = Cesium.Math.toRadians(10);
7 var headingPitchRoll = new Cesium.HeadingPitchRoll(heading, pitch, roll);
8
9 var m = Cesium.Transforms.headingPitchRollToFixedFrame(position, headingPitchRoll, Cesium.Ellipsoid.WGS84, Cesium.Transforms.eastNorthUpToFixedFrame, new Cesium.Matrix4());
10 console.log(m);
11
12 // 2. 根据矩阵求方位角
13 // 我们就用上面得到的矩阵 m 来做测试
14 // 计算中心处的变换矩阵
15 var m1 = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(m, new Cesium.Cartesian3()), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4());
16 // 矩阵相除
17 var m3 = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(m1, new Cesium.Matrix4()), m, new Cesium.Matrix4());
18 // 得到旋转矩阵
19 var mat3 = Cesium.Matrix4.getRotation(m3, new Cesium.Matrix3());
20 // 计算四元数
21 var q = Cesium.Quaternion.fromRotationMatrix(mat3);
22 // 计算旋转角(弧度)
23 var hpr = Cesium.HeadingPitchRoll.fromQuaternion(q);
24 // 得到角度
25 var heading = Cesium.Math.toDegrees(hpr.heading);
26 var pitch = Cesium.Math.toDegrees(hpr.pitch);
27 var roll = Cesium.Math.toDegrees(hpr.roll);
28 console.log('heading : ' + heading, 'pitch : ' + pitch, 'roll : ' + roll);
相关学习群:854184700;有问题可一起讨论。