相机
THEngine 提供了相机的一些便捷方法
一、camera类文档说明
Camera类用于在Cesium场景中进行相机相关的操作,提供了多种方法来控制相机的位置、姿态和视图范围等。
1. setCamera方法
功能描述
相机直接定位到某个位置,没有动画效果。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。options:类型为Object,包含相机定位的相关选项。position:类型为Object|Array,表示相机位置,支持世界坐标,经纬度坐标。如果是数组,格式为[lng, lat, alt];如果是对象,需包含lng, lat, alt属性。heading:类型为Number,可选参数,航向角,相机的水平旋转角度。roll:类型为Number,可选参数,旋转角,相机围绕视线轴的旋转角度。pitch:类型为Number,可选参数,俯仰角,相机在垂直方向上的旋转角度。complete:类型为function,可选参数,飞行动作完成时候的回调函数,飞行动作结束时调用。cancel:类型为function,可选参数,飞行动作取消之后的回调函数,飞行动作取消时调用。maximumHeight:类型为Number,可选参数,飞行的最大高度,相机飞行过程中可达到的最大高度。
案例
//案例1
THEngine.scene.camera.setCamera(viewer,{
position:[113.1,25,100],
heading: 45,//偏航角
pitch: 45,//俯仰角
roll: 0,//俯仰角
});
//案例二
THEngine.scene.camera.setCamera(viewer,{
position:Cesium.Cartesian3.fromDegrees(113,24,50),
heading: 45,//偏航角
pitch: 45,//俯仰角
roll: 0,//俯仰角
complete:()=>{
console.log('相机已经飞完');
},
cancel:()=>{
console.log('相机已经取消');
}
});
2. setCameraByRectangle方法
功能描述
相机飞到指定矩形范围。
参数说明
viewer:类型为Object,是视图对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。rect:类型为Array,矩形坐标数组,格式为[westLng, southLat, eastLng, northLat],分别表示矩形区域的西经、南纬、东经、北纬(以弧度为单位[-Pi, Pi]和[-Pi/2, Pi/2])。options:类型为Object,相机属性相关配置选项。animate:类型为Boolean,可选参数,是否开启飞行动画,true表示开启动画,false表示不开启,默认为false。duration:类型为Number,可选参数,飞行持续的时间,以秒为单位。complete:类型为function,可选参数,飞行动作完成时候的回调函数,飞行动作结束时调用。cancel:类型为function,可选参数,飞行动作取消之后的回调函数,飞行动作取消时调用。maximumHeight:类型为Number,可选参数,飞行的最大高度,相机飞行过程中可达到的最大高度。
案例
//相机飞到一个矩形区域
THEngine.scene.camera.setCameraByRectangle(viewer,[110,20,112,23],{
animate: true
});
3. flyTo方法
功能描述
相机飞到指定的位置。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。val:类型为Object,包含相机位置和姿态信息的对象。position:类型为Object|Array,相机位置,支持世界坐标,经纬度坐标。如果是数组,格式为[lng, lat, alt];如果是对象,需包含lng, lat, alt属性。heading:类型为Number,可选参数,偏航角,相机的水平旋转角度,采用弧度制。roll:类型为Number,可选参数,旋转角,相机围绕视线轴的旋转角度,采用弧度制。pitch:类型为Number,可选参数,俯仰角,相机在垂直方向上的旋转角度,采用弧度制。
options:类型为Object,相机属性相关配置选项。duration:类型为Number,可选参数,飞行持续的时间,以秒为单位。complete:类型为function,可选参数,飞行动作完成时候的回调函数,飞行动作结束时调用。cancel:类型为function,可选参数,飞行动作取消之后的回调函数,飞行动作取消时调用。maximumHeight:类型为Number,可选参数,飞行的最大高度,相机飞行过程中可达到的最大高度。
案例
//相机飞到某个位置
THEngine.scene.camera.flyTo(viewer,{
position:Cesium.Cartesian3.fromDegrees(113,24,50),//相机要飞到的位置坐标
heading: 45,//偏航角
pitch: 45,//俯仰角
roll: 0,//俯仰角
});
4. flyToBoundingSphere方法
功能描述
以一个点为中心做包围球,相机飞到包围圈的上方。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。position:类型为Object|Array,相机位置,支持世界坐标,经纬度坐标。如果是数组,格式为[lng, lat, alt];如果是对象,需包含lng, lat, alt属性。range:类型为Number,可选参数,包围球半径,默认为10米。options:类型为Object,可选参数,相机属性相关配置选项。
案例
//相机飞到经度110,纬度23,高度30,半径100米的包围球上方
THEngine.scene.camera.flyToBoundingSphere(viewer,[110,23,30],100);
5. flyToPositions方法
功能描述
相机飞向多个点。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。positions:类型为Array,坐标数组,数组中的元素可以是Cartesian3实例或包含lng, lat, alt属性的对象。options:类型为Object,可选参数,相机属性相关配置选项。
6. flyToRange方法
功能描述
相机飞向指定范围。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。positions:类型为Array,坐标数组,根据点的数量和类型进行不同的范围计算。radius:类型为Number,可选参数,缓冲区半径,默认为10,用于计算范围。options:类型为Object,相机属性相关配置选项。animate:类型为Boolean,可选参数,是否开启动画,true表示开启动画,false表示不开启,默认为true。
7. resetCamera方法
功能描述
重置摄像机,当相机使用了lookAt方法时候就可以使用该方法重置相机状态。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。
8. getCameraOptions方法
功能描述
获取相机位置,姿态,返回对象格式。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。
返回值
类型为Object,返回相机位置,姿态,包含position(Cartesian3实例), heading(角度值), pitch(角度值), roll(角度值)属性。
9. getCameraAsJSON方法
功能描述
获取相机位置,姿态,返回json格式数据。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。
返回值
类型为String,返回相机位置,姿态的JSON字符串。
10. getViewExtent方法
功能描述
获取当前可见视图范围。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。
返回值
类型为Object,返回视角矩形数据,类型为Cesium.Rectangle,若获取失败则返回undefined。
11. getCenterPosition方法
功能描述
获取视图中心点位置,返回经纬度坐标。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。
返回值
类型为Array,返回相机中心点坐标,例如[110, 22, 30]。
12. getCameraHeight方法
功能描述
获取相机离地面高度。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。
返回值
类型为Number,返回相机距离地面高度。
13. getDistanceFromSurface方法
功能描述
获取相机到到地球表面的垂直距离。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。
返回值
类型为Number,返回获取相机到到地球表面的垂直距离。
14. copyViewer方法
功能描述
复制相机视图相关信息。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。options:类型为Object,包含相机位置和姿态信息的对象。position:类型为Object|Array,相机位置,支持世界坐标,经纬度坐标。如果是数组,格式为[lng, lat, alt];如果是对象,需包含lng, lat, alt属性。heading:类型为Number,可选参数,航向角,相机的水平旋转角度。pitch:类型为Number,可选参数,俯仰角,相机在垂直方向上的旋转角度。roll:类型为Number,可选参数,旋转角,相机围绕视线轴的旋转角度。
返回值
类型为Object,返回包含复制的相机位置和姿态信息的对象。
15. isInView方法
功能描述
判断坐标是否还在地图视角内。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。coor:类型为Object|Array,坐标,支持世界坐标,经纬度坐标。如果是数组,格式为[lng, lat, alt];如果是对象,需包含lng, lat, alt属性。
返回值
类型为Boolean,如果坐标在地图视角内返回true,否则返回false。
16. setCameraController方法
功能描述
设置控制相机操作。
参数说明
viewer:类型为Object,是场景对象,通常是Cesium的Viewer实例,用于操作相机所在的场景。options:类型为Object,包含相机操作控制的相关选项。enableInputs:类型为Boolean,可选参数,默认true,是否禁用所有坐标交互。true为不禁用,false为禁用。enableTranslate:类型为Boolean,可选参数,默认true,是否允许拖拽移动场景。true为允许,false为禁止。enableZoom:类型为Boolean,可选参数,默认true,是否允许缩放场景。true为允许,false为禁止。enableRotate:类型为Boolean,可选参数,默认true,是否允许旋转场景。true为允许,false为禁止。enableTilt:类型为Boolean,可选参数,默认true,是否允许倾斜场景。true为允许,false为禁止。enableLook:类型为Boolean,可选参数,默认true,是否允许自由转动相机。true为允许,false为禁止。