相机
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
为禁止。