cesium 开发自学 方法 成员 代码示例演示 camera

new Cesium.Camera (scene)

Cesium.Camera 是 Cesium 中用于表示和操作相机的类。它提供了一系列方法和属性,用于控制相机的位置、方向、视角和动画效果,以实现地图或场景的交互和导航

Members

position : Cartesian3      获取摄像机的位置

Qe {x: 3478073.719684128, y: -26418592.76065199, z: 18747697.626764}
x: 3478073.719684128
y: -26418592.76065199
z: 18747697.626764
[[Prototype]]: Object

up : Cartesian3        相机的向上方向

frustum : Frustum        可见空间区域

aspectRatio: 1.9989373007438895
far: 10000000000
fov: 1.0471975511965976
near: 0.1
xOffset: 0
yOffset: 0
_aspectRatio: 1.9989373007438895
_far: 10000000000
_fov: 1.0471975511965976
_fovy: 0.5623531187488157
_near: 0.1
_offCenterFrustum: gm {left: -0.057735026918962574, _left: -0.057735026918962574, right: 0.057735026918962574, _right: 0.057735026918962574, top: 0.028882860356588932, …}
_sseDenominator: 0.5776572071317786
_xOffset: 0
_yOffset: 0
fovy: (...)
infiniteProjectionMatrix: (...)
offCenterFrustum: (...)
projectionMatrix: (...)
sseDenominator: (...)
[[Prototype]]: Object

Methods

flyHome

flyHome ( duration )        

将相机飞到主视图

将相机飞回到初始视图或初始位置

duration(Number):(可选)飞行持续时间(以秒为单位)。如果省略,Cesium会尝试根据航班要行驶的距离来计算理想持续时间

 viewer.camera.flyHome();

 

flyTo

flyTo (options)

将相机从当前位置移动到新位置

NameTypeDescription
optionsObjectObject with the following properties:
NameTypeDescription
destinationCartesian3 Rectangle摄像机在WGS84(世界)坐标中的最终位置或从上向下视图中可见的矩形。
orientationObject可选包含方向和向上属性或航向,俯仰和横滚属性的对象。默认情况下,方向将指向在3D中朝向帧中心,在哥伦布视图中沿负z方向。向上方向将指向3D局部正北哥伦布视图中的y方向。在无限滚动模式下,二维不使用方向。
durationNumber可选飞行持续时间(以秒为单位)。如果省略,Cesium会尝试根据航班飞行的距离来计算理想持续时间。
completeCamera~FlightCompleteCallback可选飞行结束后执行的功能。
cancelCamera~FlightCancelledCallback可选取消航班后执行的功能。
endTransformMatrix4可选表示飞行完成后相机将位于的参考帧的变换矩阵。
maximumHeightNumber可选飞行高峰时的最大高度。
pitchAdjustHeightNumber可选如果相机的飞行角度高于该值,请在飞行过程中调整俯仰角度以向下看,并将地球保持在视口中。
flyOverLongitudeNumber可选地球上2点之间总是有两种方法。此选项会迫使相机选择战斗方向以在该经度上飞行。
flyOverLongitudeWeightNumber可选仅在通过flyOverLongitude指定的lon上飞过,只要该方式的时间不超过flyOverLongitudeWeight的短途时间。
convertBoolean可选是否将目的地从世界坐标转换为场景坐标(仅在不使用3D时相关)。默认为 true 
easingFunctionEasingFunction EasingFunction~Callback可选控制在飞行过程中如何插值时间。
 viewer.camera.flyTo({
    destination : Cesium.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
    orientation : {
        direction : new Cesium.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
        up : new Cesium.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.996022179118339)
    },
    duration:8,
    complete:function(){
      console.log('我是飞行结束后执行的功能');
    },
    cancel:function(){
      console.log('我是取消航班后执行的功能');
    },
    maximumHeight:8000,

 

flyToBoundingSphere

flyToBoundingSphere (boundingSphere, options )        

将相机移到当前视图包含所提供的包围球的位置

NameTypeDescription
boundingSphereBoundingSphere要查看的边界球,以世界坐标表示。
optionsObject可选具有以下属性的对象:
名称类型说明
持续时间数字可选飞行持续时间(以秒为单位)。如果省略,Cesium会尝试根据航班飞行的距离来计算理想持续时间。
offsetHeadingPitchRange可选在局部东北朝上的参考框中,距目标的偏移量。
完整Camera〜FlightCompleteCallback可选飞行结束后执行的功能。
取消Camera〜FlightCancelledCallback可选取消航班后执行的功能。
endTransformMatrix4可选表示飞行完成后相机将位于的参考帧的变换矩阵。
maximumHeight数字可选飞行高峰时的最大高度。
pitchAdjustHeight数字可选如果相机的飞行角度高于该值,请在飞行过程中调整俯仰角度以向下看,并将地球保持在视口中。
flyOverLongitude数字可选地球上2点之间总是有两种方法。此选项会迫使相机选择战斗方向以在该经度上飞行。
flyOverLongitudeWeight数字可选仅在通过flyOverLongitude指定的lon上飞过,只要该方式的时间不超过flyOverLongitudeWeight的短途时间。
easingFunctionEasingFunction EasingFunction〜Callback可选控制在飞行过程中如何插值时间。
var boundingSphere = new Cesium.BoundingSphere(
  new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标
  500000 // 半径(距离)
);

// 定义选项(可选)
var options = {
  duration: 2.0, // 动画持续时间(以秒为单位)
  maximumHeight: 1000000, // 最大高度限制(可选)
  offset: new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-15), 0) // 偏移量(可选)
};
  viewer.camera.flyToBoundingSphere(boundingSphere, options);

 

 getPickRay

getPickRay (windowPosition, result ) → Ray        

从相机位置到 windowPosition 处的像素创建光线在世界坐标系中

NameTypeDescription
windowPositionCartesian2像素的x和y坐标。
resultRay可选将结果存储到的对象。
// 获取鼠标点击事件
viewer.screenSpaceEventHandler.setInputAction(function(click) {
  // 获取鼠标点击的位置
  var windowPosition = click.position;

  // 获取相机位置
  var cameraPosition = viewer.camera.position;

  // 使用 getPickRay 方法获取光线
  var ray = viewer.camera.getPickRay(windowPosition);

  // 光线的起点和方向
  var rayOrigin = ray.origin;
  var rayDirection = ray.direction;

  console.log("Camera Position:", cameraPosition);
  console.log("Ray Origin:", rayOrigin);
  console.log("Ray Direction:", rayDirection);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

 

getPixelSize

getPixelSize (boundingSphere, drawingBufferWidth, drawingBufferHeight) → Number        

返回以米为单位的像素大小

NameTypeDescription
boundingSphereBoundingSphere世界坐标系中的边界球。
drawingBufferWidthNumber绘图缓冲区的宽度。
drawingBufferHeightNumber绘图缓冲区的高度。
var boundingSphere = new Cesium.BoundingSphere(
  new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标
  500000 // 半径(距离)
);

// 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率)
var drawingBufferWidth = viewer.canvas.clientWidth;
var drawingBufferHeight = viewer.canvas.clientHeight;

// 使用 getPixelSize 方法获取包围球在屏幕上的像素大小
var pixelSize = viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight);

console.log("Bounding Sphere Pixel Size:", pixelSize);

 

getRectangleCameraCoordinates

getRectangleCameraCoordinates (rectangle, result ) → Cartesian3        

获取在椭圆形或地图上查看矩形所需的相机位置

NameTypeDescription
axisCartesian3旋转轴。
angleNumber可选旋转角度(以弧度为单位)。默认为 defaultLookAmount
// 定义一个地理坐标矩形(西南角和东北角)
var west = 112;
var south = 39;
var east = 120;
var north = 42;
var rectangle = Cesium.Rectangle.fromDegrees(west, south, east, north);

// 使用 getRectangleCameraCoordinates 方法获取矩形在相机坐标系下的坐标
var camera = viewer.scene.camera;
var cameraCoordinates = camera.getRectangleCameraCoordinates(rectangle);

//使用flyTo到达获取的位置坐标
viewer.scene.camera.flyTo({
    destination : rectangle
    })

look

look (axis, angle )       

围绕 axis旋转每个相机的方向矢量达 angle

NameTypeDescription
axisCartesian3旋转轴。
angleNumber可选旋转角度(以弧度为单位)。默认为 defaultLookAmount
// 获取相机对象
var camera = viewer.camera;

// 定义旋转轴(这里使用 Z 轴)
var axis = new Cesium.Cartesian3(0, 0, 1);

// 定义旋转角度(以弧度为单位)
var angle = Cesium.Math.toRadians(45); // 旋转 45 度

// 使用 look 方法旋转相机的方向
camera.look(axis, angle);

 

lookAt

lookAt (target, offset)        

使用目标和偏移量设置摄像机的位置和方向

NameTypeDescription
targetCartesian3世界坐标中的目标位置。
offsetCartesian3 HeadingPitchRange在局部东北朝上的参考框中,距目标的偏移量
viewer.camera.lookAt(

Cesium.Cartesian3.fromDegrees(-74.006, 40.7128), // 纽约市的位置

new Cesium.Cartesian3(0, 0, 1000) // 相机相对于目标的高度偏移

 

 setView

setView (options) 

设置相机的位置,方向和变换

NameTypeDescription
optionsObject具有以下属性的对象:
名称类型说明
目的地Cartesian3 矩形可选摄像机在WGS84(世界)坐标中的最终位置或从上向下视图中可见的矩形。
方向对象可选包含方向和向上属性或航向,俯仰和横滚属性的对象。默认情况下,方向将指向在3D中朝向帧中心,在哥伦布视图中沿负z方向。向上方向将指向3D局部正北哥伦布视图中的y方向。在无限滚动模式下,二维不使用方向。
endTransformMatrix4可选转换代表摄像机参考帧的矩阵。
转换布尔值可选是否将目的地从世界坐标转换为场景坐标(仅在不使用3D时相关)。默认为 true
// 定义视图参数
var options = {
  destination: Cesium.Cartesian3.fromDegrees(-74.006, 40.7128, 1000), // 相机的位置(经度、纬度、高度)
  orientation: {
    heading: Cesium.Math.toRadians(45), // 相机的方向,以弧度表示
    pitch: Cesium.Math.toRadians(-30), // 相机的俯仰角,以弧度表示
    roll: 0 // 相机的横滚角,以弧度表示
  },
  up: Cesium.Cartesian3.UNIT_Z // 相机的上方向
};

// 使用 setView 方法设置相机视图
viewer.camera.setView(options);

zoomIn

zoomIn ( amount )

沿相机的视图矢量缩放 amount

NameTypeDescription
amountNumber可选移动量。默认为 defaultZoomAmount 
viewer.camera.zoomIn(10000)

zoomOut

zoomOut ( amount )

沿 amount 沿相反方向缩放相机的视角向量

viewer.camera.zoomOut(10000)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

场主不吃鍋巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值