Camera

摄像机由位置,方向和视锥台定义。

方向与视图形成正交基础,上和右=视图x上单位矢量。

视锥由6个平面定义。 每个平面都由Cartesian4对象表示,其中x,y和z分量定义垂直于该平面的单位矢量,而w分量是该平面与原点/相机位置的距离。
new Camera(scene)
Parameters:
scene (Scene) 现场。
Example
// Create a camera looking down the negative z-axis, positioned at the origin,
// with a field of view of 60 degrees, and 1:1 aspect ratio.
var camera = new bmgl.Camera(scene);
camera.position = new bmgl.Cartesian3();
camera.direction = bmgl.Cartesian3.negate(bmgl.Cartesian3.UNIT_Z, new bmgl.Cartesian3());
camera.up = bmgl.Cartesian3.clone(bmgl.Cartesian3.UNIT_Y);
camera.frustum.fov = bmgl.Math.PI_OVER_THREE;
camera.frustum.near = 1.0;
camera.frustum.far = 2.0;

Members

(static) DEFAULT_OFFSET : HeadingPitchRange

当相机飞到包含边界球体的位置时使用的默认方向/间距/范围。

(static) DEFAULT_VIEW_FACTOR : Number

要乘以相机位置并在设置相机以查看矩形后将其添加回的标量。值为零表示相机将查看整个Camera#DEFAULT_VIEW_RECTANGLE,大于零的值将使其远离范围,小于零的值将使其靠近范围。

(static) DEFAULT_VIEW_RECTANGLE : Rectangle

创建时相机将查看的默认矩形。

(readonly) changed : Event

获取照相机更改percentageChanged时将引发的事件。

constrainedAxis : Cartesian3

如果设置,相机将无法在任何方向上旋转超过此轴。
Default Value: undefined

defaultLookAmount : Number

当没有为Look方法提供参数时旋转相机的默认值。
Default Value: Math.PI / 60.0

defaultMoveAmount : Number

移动方法未提供参数时移动相机的默认值。
Default Value: 100000.0;

defaultRotateAmount : Number

当没有为Rotate方法提供参数时旋转相机的默认量。
Default Value: Math.PI / 3600.0

defaultZoomAmount : Number

当没有为缩放方法提供参数时移动相机的默认量。
Default Value: 100000.0;

direction : Cartesian3

相机的视图方向。

(readonly) directionWC : Cartesian3

获取摄像机在世界坐标中的视图方向。

frustum : Frustum

视野中的空间区域。
Default Value: PerspectiveFrustum()
See:

(readonly) heading : Number

获取以弧度表示的相机标题。

(readonly) inverseTransform : Matrix4

获取逆相机转换。
Default Value: Matrix4.IDENTITY

(readonly) inverseViewMatrix : Matrix4

获取逆视图矩阵。
See:

maximumZoomFactor : Number

乘以从表面缩小时用于确定在何处夹住相机位置的地图大小的系数。默认值为1.5。仅对二维有效,地图可旋转。
Default Value: 1.5

(readonly) moveEnd : Event

获取相机停止移动时将引发的事件。

(readonly) moveStart : Event

获取摄像机开始移动时将引发的事件。

percentageChanged : number

changed事件发生之前,相机必须更改的数量。该值是[0,1]范围内的百分比。
Default Value: 0.5

(readonly) pitch : Number

获取以弧度表示的相机间距。

position : Cartesian3

相机的位置。

(readonly) positionCartographic : Cartographic

获取相机的Cartographic位置,经度和纬度以弧度表示,高度以米为单位。在二维和哥伦布视图中,当相机位于地图之外时,返回的经度和纬度可能超出有效经度和纬度的范围。

(readonly) positionWC : Cartesian3

获取摄像机在世界坐标中的位置。
相机的正确方向。

(readonly) rightWC : Cartesian3

获取摄像机在世界坐标中的正确方向。

(readonly) roll : Number

使相机以弧度滚动。

(readonly) transform : Matrix4

获取相机的参考帧。这个转换的逆矩阵被附加到视图矩阵中。
Default Value: Matrix4.IDENTITY

up : Cartesian3

相机的向上方向。

(readonly) upWC : Cartesian3

获取摄像机在世界坐标中的向上方向。

(readonly) viewMatrix : Matrix4

获取视图矩阵。
See:

Methods

cameraToWorldCoordinates(cartesian, result) → {Cartesian4}
将相机参考帧中的向量或点转换为世界坐标。
Parameters:
cartesian (Cartesian4) 要变换的向量或点。
result (Cartesian4) 存储结果的对象。
cameraToWorldCoordinatesPoint(cartesian, result) → {Cartesian3}
将点从相机的参考帧转换为世界坐标。
Parameters:
cartesian (Cartesian3) 要转换的点。
result (Cartesian3) 存储结果的对象。
cameraToWorldCoordinatesVector(cartesian, result) → {Cartesian3}
将矢量从相机的参考帧转换为世界坐标。
Parameters:
cartesian (Cartesian3) 要转换的向量。
result (Cartesian3) 存储结果的对象。
cancelFlight()
如果正在进行,取消当前的相机飞行。相机留在当前位置。
computeViewRectangle(ellipsoid, result) → {Rectangle|undefined}
计算椭圆体上的近似可见矩形。
Parameters:
ellipsoid (Ellipsoid) (default Ellipsoid.WGS84) 要知道可见区域的椭球体。
result (Rectangle) 存储结果的矩形
distanceToBoundingSphere(boundingSphere) → {Number}
返回从相机到边界球前面的距离。
Parameters:
boundingSphere (BoundingSphere) 世界坐标系中的边界球。
flyHome(duration)
将相机转到主视图。使用Camera#.DEFAULT_VIEW_RECTANGLE设置三维场景的默认视图。二维和哥伦布视图的主视图显示整个地图。
Parameters:
duration (Number) 以秒为单位的飞行时间。如果忽略,bigemap-gl将根据航班要行驶的距离计算理想持续时间。见Camera#flyTo
flyTo(options)
将相机从当前位置飞到新位置。
Parameters:
options (Object)
Name Description
options.destination
(Cartesian3 | Rectangle)
摄像机在WGS84(世界)坐标中的最终位置,或从俯视图可见的矩形。
options.orientation
Object
包含方向和向上属性或航向、纵摇和横摇属性的对象。默认情况下,该方向将指向三维中的帧中心,并在Columbus视图中指向负Z方向。在哥伦布视图中,向上方向将指向局部北三维方向和正Y方向。在无限滚动模式下,方向不用于二维。
options.duration
Number
以秒为单位的飞行时间。如果忽略,bigemap-gl将根据航班要行驶的距离计算理想持续时间。
options.complete
Camera~FlightCompleteCallback
飞行完成后执行的功能。
options.cancel
Camera~FlightCancelledCallback
航班取消时执行的功能。
options.endTransform
Matrix4
转换矩阵表示飞行完成后相机将处于的参考帧。
options.maximumHeight
Number
飞行高峰期的最大高度。
options.pitchAdjustHeight
Number
如果相机的飞行速度高于该值,请在飞行过程中调整俯仰以向下看,并将地球保持在视区中。
options.flyOverLongitude
Number
地球上两点之间总是有两种方式。这个选项强制相机选择战斗方向飞越经度。
options.flyOverLongitudeWeight
Number
只有在飞行长度不超过飞行长度的短距离乘以飞行长度重量时,才能飞越飞行长度指定的长度。
options.convert
Boolean
是否将目的地从世界坐标转换为场景坐标(仅在不使用3D时相关)。默认为true
options.easingFunction
(EasingFunction | EasingFunction~Callback)
控制在飞行期间如何插入时间。
Example
// 1. Fly to a position with a top-down view
viewer.camera.flyTo({
    destination : bmgl.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});

// 2. Fly to a Rectangle with a top-down view
viewer.camera.flyTo({
    destination : bmgl.Rectangle.fromDegrees(west, south, east, north)
});

// 3. Fly to a position with an orientation using unit vectors.
viewer.camera.flyTo({
    destination : bmgl.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
    orientation : {
        direction : new bmgl.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
        up : new bmgl.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
    }
});

// 4. Fly to a position with an orientation using heading, pitch and roll.
viewer.camera.flyTo({
    destination : bmgl.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
    orientation : {
        heading : bmgl.Math.toRadians(175.0),
        pitch : bmgl.Math.toRadians(-35.0),
        roll : 0.0
    }
});
Throws
  • DeveloperError : 如果给出方向或向上,则两者都是必需的。
flyToBoundingSphere(boundingSphere, options)
将相机飞到当前视图包含提供的边界球体的位置。

偏移量是以边界球中心为中心的局部东北向上参考框中的航向/俯仰/范围。航向和俯仰角在本地东北向上参考框架中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。如果范围为零,则计算范围以使整个边界球可见。

在二维和哥伦布视图中,必须有一个自上而下的视图。相机将放在目标上方向下看。高于目标的高度将是范围。航向将与当地北部对齐。

Parameters:
boundingSphere (BoundingSphere) 要查看的边界球,在世界坐标中。
options (Object)
Name Description
options.duration
Number
以秒为单位的飞行时间。如果忽略,bigemap-gl将根据航班要行驶的距离计算理想持续时间。
options.offset
HeadingPitchRange
在以目标为中心的局部东北向上参考帧中距目标的偏移。
options.complete
Camera~FlightCompleteCallback
飞行完成后执行的功能。
options.cancel
Camera~FlightCancelledCallback
航班取消时执行的功能。
options.endTransform
Matrix4
转换矩阵表示飞行完成后相机将处于的参考帧。
options.maximumHeight
Number
飞行高峰期的最大高度。
options.pitchAdjustHeight
Number
如果相机的飞行速度高于该值,请在飞行过程中调整俯仰以向下看,并将地球保持在视区中。
options.flyOverLongitude
Number
地球上两点之间总是有两种方式。这个选项强制相机选择战斗方向飞越经度。
options.flyOverLongitudeWeight
Number
只有在飞行长度不超过飞行长度的短距离乘以飞行长度重量时,才能飞越飞行长度指定的长度。
options.easingFunction
(EasingFunction | EasingFunction~Callback)
控制在飞行期间如何插入时间。
getMagnitude() → {Number}
获取相机位置的大小。在3D中,这是矢量大小。在二维和哥伦布视图中,这是到地图的距离。
getPickRay(windowPosition, result) → {Ray}
从相机位置通过世界坐标中windowPosition处的像素创建光线。
Parameters:
windowPosition (Cartesian2) 像素的x和y坐标。
result (Ray) 存储结果的对象。
getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight) → {Number}
返回以米为单位的像素大小。
Parameters:
boundingSphere (BoundingSphere) 世界坐标系中的边界球。
drawingBufferWidth (Number) 绘图缓冲区宽度。
drawingBufferHeight (Number) 绘图缓冲区高度。
getRectangleCameraCoordinates(rectangle, result) → {Cartesian3}
获取在椭球体或地图上查看矩形所需的相机位置
Parameters:
rectangle (Rectangle) 要查看的矩形。
result (Cartesian3) 查看矩形所需的相机位置
look(axis, angle)
将相机的每个方向向量围绕axis旋转angle
Parameters:
axis (Cartesian3) 要旋转的轴。
angle (Number) 以弧度表示的旋转角度。默认为defaultLookAmount
See:
lookAt(target, offset)
使用目标和偏移设置相机位置和方向。目标必须以世界坐标给出。偏移可以是笛卡尔坐标系,也可以是以目标为中心的东北向上局部参照系中的航向/俯仰/范围。如果偏移量是笛卡尔坐标系的,那么它是相对于由变换矩阵定义的参照系中心的偏移量。如果偏移量为航向/俯仰/范围,则航向和俯仰角在变换矩阵定义的参考框中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。在2d中,必须有一个自顶向下的视图。相机将放在目标上方向下看。目标上方的高度将是偏移量的大小。航向将根据偏移量确定。如果无法从偏移量确定航向,则航向将为北。
Parameters:
target (Cartesian3) 世界坐标中的目标位置。
offset ((Cartesian3 | HeadingPitchRange)) 在以目标为中心的局部东北向上参考帧中距目标的偏移。
Example
// 1. Using a cartesian offset
var center = bmgl.Cartesian3.fromDegrees(-98.0, 40.0);
viewer.camera.lookAt(center, new bmgl.Cartesian3(0.0, -4790000.0, 3930000.0));

// 2. Using a HeadingPitchRange offset
var center = bmgl.Cartesian3.fromDegrees(-72.0, 40.0);
var heading = bmgl.Math.toRadians(50.0);
var pitch = bmgl.Math.toRadians(-20.0);
var range = 5000.0;
viewer.camera.lookAt(center, new bmgl.HeadingPitchRange(heading, pitch, range));
Throws
lookAtTransform(transform, offset)
使用目标和变换矩阵设置相机位置和方向。偏移量可以是笛卡尔或航向/俯仰/范围。如果偏移量是笛卡尔坐标系的,那么它是相对于由变换矩阵定义的参照系中心的偏移量。如果偏移量为航向/俯仰/范围,则航向和俯仰角在变换矩阵定义的参考框中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。在2d中,必须有一个自顶向下的视图。相机将放置在参考框架的中心上方。目标上方的高度将是偏移量的大小。航向将根据偏移量确定。如果无法从偏移量确定航向,则航向将为北。
Parameters:
transform (Matrix4) 定义参照系的变换矩阵。
offset ((Cartesian3 | HeadingPitchRange)) 在以目标为中心的参考框中与目标的偏移量。
Example
// 1. Using a cartesian offset
var transform = bmgl.Transforms.eastNorthUpToFixedFrame(bmgl.Cartesian3.fromDegrees(-98.0, 40.0));
viewer.camera.lookAtTransform(transform, new bmgl.Cartesian3(0.0, -4790000.0, 3930000.0));

// 2. Using a HeadingPitchRange offset
var transform = bmgl.Transforms.eastNorthUpToFixedFrame(bmgl.Cartesian3.fromDegrees(-72.0, 40.0));
var heading = bmgl.Math.toRadians(50.0);
var pitch = bmgl.Math.toRadians(-20.0);
var range = 5000.0;
viewer.camera.lookAtTransform(transform, new bmgl.HeadingPitchRange(heading, pitch, range));
Throws
lookDown(amount)
如果不是在二维模式下,则沿其上方向向量的相反方向,以弧度围绕其右向量旋转相机。
Parameters:
amount (Number) 以弧度表示的旋转量。默认为defaultLookAmount
See:
lookLeft(amount)
如果不是在二维模式下,则沿其右向量的相反方向,以弧度为单位,围绕其上方向向量旋转相机。
Parameters:
amount (Number) 以弧度表示的旋转量。默认为defaultLookAmount
See:
lookRight(amount)
如果不是在二维模式下,则沿其右向量的方向,以弧度为单位,围绕其上方向向量旋转相机。
Parameters:
amount (Number) 以弧度表示的旋转量。默认为defaultLookAmount
See:
lookUp(amount)
如果不是在二维模式下,则将相机绕其右向量以弧度的数量沿其上方向旋转。
Parameters:
amount (Number) 以弧度表示的旋转量。默认为defaultLookAmount
See:
move(direction, amount)
将相机位置沿direction转换amount
Parameters:
direction (Cartesian3) 移动的方向。
amount (Number) 以米为单位的移动量。默认为defaultMoveAmount
See:
moveBackward(amount)
沿相机视图向量的相反方向,将相机的位置转换为amount。在二维模式下,这将缩小相机,而不是平移相机的位置。
Parameters:
amount (Number) 以米为单位的移动量。默认为defaultMoveAmount
See:
moveDown(amount)
沿相机上方向向量的相反方向,将相机的位置转换为amount
Parameters:
amount (Number) 以米为单位的移动量。默认为defaultMoveAmount
See:
moveForward(amount)
沿相机的视图向量将相机的位置转换为amount。在二维模式下,这将放大相机,而不是平移相机的位置。
Parameters:
amount (Number) 以米为单位的移动量。默认为defaultMoveAmount
See:
moveLeft(amount)
沿相机右向量的相反方向,将相机的位置平移amount
Parameters:
amount (Number) 以米为单位的移动量。默认为defaultMoveAmount
See:
moveRight(amount)
沿相机的右向量将相机的位置转换为amount
Parameters:
amount (Number) 以米为单位的移动量。默认为defaultMoveAmount
See:
moveUp(amount)
沿相机的上方向向量将相机的位置转换为amount
Parameters:
amount (Number) 以米为单位的移动量。默认为defaultMoveAmount
See:
pickEllipsoid(windowPosition, ellipsoid, result) → {Cartesian3}
选择椭球体或地图。
Parameters:
windowPosition (Cartesian2) 像素的x和y坐标。
ellipsoid (Ellipsoid) (default Ellipsoid.WGS84) 要拾取的椭圆体。
result (Cartesian3) 存储结果的对象。
rotate(axis, angle)
将相机绕axis旋转angle。相机位置到相机参考帧中心的距离保持不变。
Parameters:
axis (Cartesian3) 在世界坐标系中给定的旋转轴。
angle (Number) 以弧度表示的旋转角度。默认为defaultRotateAmount
See:
rotateDown(angle)
以向下的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle (Number) 以弧度表示的旋转角度。默认为defaultRotateAmount
See:
rotateLeft(angle)
以向左的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle (Number) 以弧度表示的旋转角度。默认为defaultRotateAmount
See:
rotateRight(angle)
以向右的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle (Number) 以弧度表示的旋转角度。默认为defaultRotateAmount
See:
rotateUp(angle)
以向上的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle (Number) 以弧度表示的旋转角度。默认为defaultRotateAmount
See:
setView(options)
设置相机位置、方向和变换。
Parameters:
options (Object)
Name Description
options.destination
(Cartesian3 | Rectangle)
摄像机在WGS84(世界)坐标中的最终位置,或从俯视图可见的矩形。
options.orientation
Object
包含方向和向上属性或航向、纵摇和横摇属性的对象。默认情况下,该方向将指向三维中的帧中心,并在Columbus视图中指向负Z方向。在哥伦布视图中,向上方向将指向局部北三维方向和正Y方向。在无限滚动模式下,方向不用于二维。
options.endTransform
Matrix4
表示相机参考帧的变换矩阵。
options.convert
Boolean
是否将目的地从世界坐标转换为场景坐标(仅在不使用3D时相关)。默认为true
Example
// 1. Set position with a top-down view
viewer.camera.setView({
    destination : bmgl.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});

// 2 Set view with heading, pitch and roll
viewer.camera.setView({
    destination : cartesianPosition,
    orientation: {
        heading : bmgl.Math.toRadians(90.0), // east, default value is 0.0 (north)
        pitch : bmgl.Math.toRadians(-90),    // default value (looking down)
        roll : 0.0                             // default value
    }
});

// 3. Change heading, pitch and roll with the camera position remaining the same.
viewer.camera.setView({
    orientation: {
        heading : bmgl.Math.toRadians(90.0), // east, default value is 0.0 (north)
        pitch : bmgl.Math.toRadians(-90),    // default value (looking down)
        roll : 0.0                             // default value
    }
});


// 4. View rectangle with a top-down view
viewer.camera.setView({
    destination : bmgl.Rectangle.fromDegrees(west, south, east, north)
});

// 5. Set position with an orientation using unit vectors.
viewer.camera.setView({
    destination : bmgl.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
    orientation : {
        direction : new bmgl.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
        up : new bmgl.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
    }
});
switchToOrthographicFrustum()
将截锥/投影切换为正交。此函数在二维中是不可操作的,它始终是正交的。
switchToPerspectiveFrustum()
将截锥/投影切换到透视。此函数在二维中是禁止运算的,它必须始终是正交的。
twistLeft(amount)
逆时针旋转相机,以一定的弧度围绕其方向向量旋转。
Parameters:
amount (Number) 以弧度表示的旋转量。默认为defaultLookAmount
See:
twistRight(amount)
将相机沿其方向向量顺时针旋转一定数量,以弧度为单位。
Parameters:
amount (Number) 以弧度表示的旋转量。默认为defaultLookAmount
See:
viewBoundingSphere(boundingSphere, offset)
设置相机,使当前视图包含提供的边界球体。

偏移量是以边界球中心为中心的局部东北向上参考框中的航向/俯仰/范围。航向和俯仰角在本地东北向上参考框架中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。如果范围为零,则计算范围以使整个边界球体可见。

在二维中,必须有一个俯视图。相机将放在目标上方向下看。高于目标的高度将是范围。航向将根据偏移量确定。如果无法从偏移量确定航向,则航向将为北。

Parameters:
boundingSphere (BoundingSphere) 要查看的边界球,在世界坐标中。
offset (HeadingPitchRange) 在以目标为中心的局部东北向上参考帧中距目标的偏移。
Throws
worldToCameraCoordinates(cartesian, result) → {Cartesian4}
将一个向量或点从世界坐标转换到相机的参考帧。
Parameters:
cartesian (Cartesian4) 要变换的向量或点。
result (Cartesian4) 存储结果的对象。
worldToCameraCoordinatesPoint(cartesian, result) → {Cartesian3}
将点从世界坐标转换为相机的参考帧。
Parameters:
cartesian (Cartesian3) 要转换的点。
result (Cartesian3) 存储结果的对象。
worldToCameraCoordinatesVector(cartesian, result) → {Cartesian3}
将矢量从世界坐标转换为相机的参考帧。
Parameters:
cartesian (Cartesian3) 要转换的向量。
result (Cartesian3) 存储结果的对象。
zoomIn(amount)
沿相机的视图向量缩放amount
Parameters:
amount (Number) 要移动的数量。默认为defaultZoomAmount
See:
zoomOut(amount)
沿相机视图向量的相反方向缩放amount
Parameters:
amount (Number) 要移动的数量。默认为defaultZoomAmount
See:

Type Definitions

FlightCancelledCallback()
当航班取消时执行的一种功能。
FlightCompleteCallback()
一种在飞行结束时执行的功能。