相机可以控制我们在场景中的视野,默认的,相机操作是这样的:
- 左键单击并拖动 - 移动整个地图
- 右键单击并拖动 - 放大和缩小相机。
- 中轮滚动 - 也可以放大和缩小相机。
- 中间点击并拖动 - 围绕地球表面的点旋转相机。
官方文档:https://cesium.com/docs/cesiumjs-ref-doc/Camera.html
从一个视野点查看地图,设置范例
代码语言:javascript复制let { scene, camera ,screenSpaceCameraController} = viewer
// 禁止默认的事件
scene.screenSpaceCameraController.enableRotate = false;//禁止旋转
scene.screenSpaceCameraController.enableTranslate = false;// 禁止移动
scene.screenSpaceCameraController.enableZoom = false;//禁止缩放
scene.screenSpaceCameraController.enableTilt = false;//禁止倾斜相机
scene.screenSpaceCameraController.enableLook = false;
let cameraHeight = 1.1e7
//相机高度最小值,即控制放大级别
screenSpaceCameraController.minimumZoomDistance = cameraHeight * 1.5
//相机高度最大值,即控制缩小级别
screenSpaceCameraController.maximumZoomDistance = cameraHeight * 3
let pointDestination=Cesium.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0);//视野点
let rectangleDestination=Cesium.Rectangle.fromDegrees(0,20,10,30);//视野区域,由[西,南,东,北]四个度数来构成
scene.camera.setView({
destination: pointDestination,
orientation: {
heading: 6.283185307179586,
pitch: -1.5707963267948966,
roll: 0
}
})
相机的操作方式
理论方面,可以参看《三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理》
Cesium,相机的旋转参数:
- Roll是围绕X轴旋转
- Pitch 是围绕Y轴旋转
- Heading是围绕Z轴旋转
Cesium操作摄像头的常用方法
- flyHome(duration) 地图回到home, to set the default view for the 3D scene
- flyTo(options),Flies the camera from its current position to a new position.
- lookAt(target, offset):lookAt(center, new Cesium.HeadingPitchRange(Cesium.Math.toRadians(9), Cesium.Math.toRadians(9), 100))
- setView(options),Sets the camera position, orientation and transform,有两种方式
- Cartesian3:destination : Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0),
- rectangle: destination :Cesium.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0),//west, south, east, north
flyTo可以比setView,设置更多的参数
代码语言:javascript复制view.camera.flyTo({
destination :Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0), // 设置位置
orientation: { heading :Cesium.Math.toRadians(20.0), // 方向
pitch :Cesium.Math.toRadians(-90.0),// 倾斜角度
roll :0
},
duration:5, // 设置飞行持续时间,默认会根据距离来计算
complete:function () {//TODO}, // 到达位置后执行的回调函数
cancle:function () {//TODO}, // 如果取消飞行则会调用此函数
pitchAdjustHeight:-90, // 如果摄像机飞越高于该值,则调整俯仰俯仰的俯仰角度,并将地球保持在视口中。
maximumHeight:5000, // 相机最大飞行高度
flyOverLongitude:100, // 如果到达目的地有2种方式,设置具体值后会强制选择方向飞过这个经度(这个,很好用)});
参考文章:
Cesium学习笔记(四): 相机(camera) https://blog.csdn.net/UmGsoil/article/details/74518960
转载本站文章《Cesium笔记(7): camera相机与视野,cesium地图移动缩放旋转配置》, 请注明出处:https://www.zhoulujun.cn/html/GIS/cesium/8333.html