Skip to main content

相机

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,返回相机位置,姿态,包含positionCartesian3实例), 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为禁止。