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
right : Cartesian3 获取相机的右方向
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)
将相机从当前位置移动到新位置
Name | Type | Description | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options | Object | Object with the following properties:
|
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 )
将相机移到当前视图包含所提供的包围球的位置
Name | Type | Description | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
boundingSphere | BoundingSphere | 要查看的边界球,以世界坐标表示。 | |||||||||||||||||||||||||||||||||
options | Object | 可选具有以下属性的对象:
|
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
处的像素创建光线在世界坐标系中
Name | Type | Description |
---|---|---|
windowPosition | Cartesian2 | 像素的x和y坐标。 |
result | Ray | 可选将结果存储到的对象。 |
// 获取鼠标点击事件
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
返回以米为单位的像素大小
Name | Type | Description |
---|---|---|
boundingSphere | BoundingSphere | 世界坐标系中的边界球。 |
drawingBufferWidth | Number | 绘图缓冲区的宽度。 |
drawingBufferHeight | Number | 绘图缓冲区的高度。 |
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
获取在椭圆形或地图上查看矩形所需的相机位置
Name | Type | Description |
---|---|---|
axis | Cartesian3 | 旋转轴。 |
angle | Number | 可选旋转角度(以弧度为单位)。默认为 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
Name | Type | Description |
---|---|---|
axis | Cartesian3 | 旋转轴。 |
angle | Number | 可选旋转角度(以弧度为单位)。默认为 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)
使用目标和偏移量设置摄像机的位置和方向
Name | Type | Description |
---|---|---|
target | Cartesian3 | 世界坐标中的目标位置。 |
offset | Cartesian3 | HeadingPitchRange | 在局部东北朝上的参考框中,距目标的偏移量 |
viewer.camera.lookAt(
Cesium.Cartesian3.fromDegrees(-74.006, 40.7128), // 纽约市的位置
new Cesium.Cartesian3(0, 0, 1000) // 相机相对于目标的高度偏移
setView
setView (options)
设置相机的位置,方向和变换
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options | Object | 具有以下属性的对象:
|
// 定义视图参数
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
Name | Type | Description |
---|---|---|
amount | Number | 可选移动量。默认为 defaultZoomAmount |
viewer.camera.zoomIn(10000)
zoomOut
zoomOut ( amount )
沿 amount
沿相反方向缩放相机的视角向量
viewer.camera.zoomOut(10000)