Camera

new LSGlobe.Camera(scene)

相机类,它由位置、方向和视锥体定义。 视锥体(viewing frustum)由6个(上、下、左、右、近、远)平面限定, 每个平面可由Cartesian4对象表示,其中x,y和z分量定义垂直于平面的单位向量,w分量是平面距原点/相机位置的距离。
Name Type Description
scene Scene 场景对象
Example:
// 创建一个相机对象,并设置相机各参数
var camera = new LSGlobe.Camera(scene);
camera.position = new LSGlobe.Cartesian3();
camera.direction = LSGlobe.Cartesian3.negate(LSGlobe.Cartesian3.UNIT_Z, new LSGlobe.Cartesian3());
camera.up = LSGlobe.Cartesian3.clone(LSGlobe.Cartesian3.UNIT_Y);
camera.frustum.fov = LSGlobe.Math.PI_OVER_THREE;
camera.frustum.near = 1.0;
camera.frustum.far = 2.0;

Members

staticLSGlobe.Camera.DEFAULT_VIEW_FACTOR : Number

标量乘以像机位置并在设置像机后将其添加回来查看矩形。值为零表示摄像机将查看整个Camera#DEFAULT_VIEW_RECTANGLE值, 大于零的值将使其原理范围,并且小于零的值将使其移动到接近范围。

staticLSGlobe.Camera.DEFAULT_VIEW_RECTANGLE : Rectangle

相机的默认可视域矩形

readonlychanged : Event

获取像机更改后将引发的percentageChanged事件

constrainedAxis : Cartesian3

如果设置此属性值,相机沿着任一个坐标轴都不能够旋转
Default Value: undefined

defaultLookAmount : Number

当没有提供参数给观察方法时,相机观察角度的默认值
Default Value: Math.PI / 60.0

defaultMoveAmount : Number

当没有提供参数给相机移动方法时,相机移动时的默认值
Default Value: 100000.0;

defaultRotateAmount : Number

当没有提供参数给旋转方法时,相机旋转角度默认值
Default Value: Math.PI / 3600.0

defaultZoomAmount : Number

当没有提供参数给缩放方法时,相机缩放角度默认值
Default Value: 100000.0;

direction : Cartesian3

像机方向

readonlydirectionWC : Cartesian3

获取相机在世界坐标系中的观察方向

frustum : Frustum

视野中的空间区域,即视锥体
Default Value: PerspectiveFrustum()
See:
  • PerspectiveFrustum
  • PerspectiveOffCenterFrustum
  • OrthographicFrustum

readonlyheading : Number

获取相机朝向(弧度)

readonlyinverseTransform : Matrix4

获取相机变换的逆变换
Default Value: Matrix4.IDENTITY

readonlyinverseViewMatrix : Matrix4

视图矩阵的逆矩阵
See:

maximumZoomFactor : Number

系数乘以地图大小,用于确定从表面缩小时获取相机位置的位置。 默认值是1.5。 只对2D有效,地图可旋转
Default Value: 1.5

readonlymoveEnd : Event

相机停止移动时的响应事件

readonlymoveStart : Event

相机开始移动时的响应事件

percentageChanged : number

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

readonlypitch : Number

获取相机的俯仰角(弧度)

position : Cartesian3

像机位置

readonlypositionCartographic : Cartographic

获取相机的地理坐标系位置。 在2D地图显示的时候,当相机在地图之外, 返回的经纬度的值很有可能在有效的经纬度范围之外

readonlypositionWC : Cartesian3

获取相机在世界坐标系中的位置
相机的右(right)方向

readonlyrightWC : Cartesian3

获取相机在世界坐标系下的right方向

readonlyroll : Number

获取相机的翻滚角(弧度)

readonlytransform : Matrix4

获取相机的坐标系。变换的逆变换被应用于视图矩阵
Default Value: Matrix4.IDENTITY

up : Cartesian3

相机的上(up)方向

readonlyupWC : Cartesian3

获取相机在世界坐标系下的UP方向

readonlyviewMatrix : Matrix4

获取视图矩阵
See:

workingFrustums : Array.<Frustum>

当前使用的视景体;场景绘制使用的是调整后的视景体

Methods

flyTo(options)

相机从当前位置飞行到新的空间位置
Name Type Description
options Object 对象具有以下属性:
Name Type Description
destination Cartesian3 | Rectangle 相机在WGS84世界坐标系中的最终位置,或是自顶向下视图中可见的矩形区域
orientation Object optional 包含了方位(direction)、上方向(up)以及方位角(heading)、俯仰角(pitch)、 滚动角(roll)属性的对象。 默认情况下,3D中方位(direction)指向框架中心,在Columbus视图中指向负z方向。 在3D中上方向(up)指向本地北方向,而在Columbus视图中指向正y方向。在无限滚动模式下,二维视图不使用方向(orientation)
duration Number optional 飞行持续时间(以秒为单位)。如果省略,由飞行距离计算合理的持续时间
complete Camera~FlightCompleteCallback optional 飞行完成时执行的功能
cancel Camera~FlightCancelledCallback optional 飞行取消时执行的功能
endTransform Matrix4 optional 飞行完成时相机将处于的参考系的变换矩阵
maximumHeight Number optional 飞行中的最大高度
easingFunction EasingFunction | EasingFunction~Callback optional 释放时调用功能
Throws:
  • DeveloperError : 若提供了方向(direction )、上方向(up)两者之一,则两者都需要提供
Example:
// 1. 飞向通过top-down视图表示的位置
viewer.camera.flyTo({
    destination : LSGlobe.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});

// 2. 飞向通过top-down视图表示的矩形
viewer.camera.flyTo({
    destination : LSGlobe.Rectangle.fromDegrees(west, south, east, north)
});

// 3. 飞向利用单位向量表示方向(orientatin)的位置
viewer.camera.flyTo({
    destination : LSGlobe.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
    orientation : {
        direction : new LSGlobe.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
        up : new LSGlobe.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
    }
});

// 4. 飞向利用方位角(heading)、俯仰角(pitch)、滚动角(roll)表示方向(orientatin)的位置
viewer.camera.flyTo({
    destination : LSGlobe.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
    orientation : {
        heading : LSGlobe.Math.toRadians(175.0),
        pitch : LSGlobe.Math.toRadians(-35.0),
        roll : 0.0
    }
});

lookAt(axis, offset)

通过目标(target)和偏移(offset)设置相机位置、方向。 目标(target)以世界坐标方式表示; 偏移(offset)是在以目标为中心的本地“东-北-上”参考系中的笛卡尔坐标或“方位角/俯仰角/范围(heading/pitch/range)”。 如果偏移(offset)由笛卡尔坐标表示,它表示距离由变换矩阵定义的参考系中心的偏移量。 如果偏移(offset)由“heading/pitch/range” 表示,方位角(heading)和俯仰角(pitch)的角度由根据变换矩阵定义的参考系确定,方位角(heading)从y轴开始朝向x轴增加, 俯仰角(pitch)为从xy平面的旋转角度,正的俯仰角位于平面下方,负的俯仰角位于平面上方。 范围(range)为距中心点的距离。 在2D中必须为自上而下视图,相机位于俯视目标的上方,目标上方的高度值是偏移量的大小。方位角根据偏移确定, 如果不能从偏移确定方位角,则方位角为北方向
Name Type Description
axis Cartesian3 目标在世界坐标中的空间位置
offset Cartesian3 | HeadingPitchRange 距以目标为中心的本地“东-北-上”参考系的偏移
Throws:
  • DeveloperError : 变形时不支持lookAt方法
Example:
// 1. 利用笛卡尔坐标设置偏移
var center = LSGlobe.Cartesian3.fromDegrees(-98.0, 40.0);
viewer.camera.lookAt(center, new LSGlobe.Cartesian3(0.0, -4790000.0, 3930000.0));

// 2. 利用HeadingPitchRange设置偏移
var center = LSGlobe.Cartesian3.fromDegrees(-72.0, 40.0);
var heading = LSGlobe.Math.toRadians(50.0);
var pitch = LSGlobe.Math.toRadians(-20.0);
var range = 5000.0;
viewer.camera.lookAt(center, new LSGlobe.HeadingPitchRange(heading, pitch, range));

lookDown(amount)

沿着相机的up反方向把相机旋转一定的角度
Name Type Description
amount Number optional 旋转量,弧度为单位,默认值是defaultLookAmount
See:

lookLeft(amount)

沿着相机的left方向把相机旋转一定的角度
Name Type Description
amount Number optional 旋转量,弧度为单位,默认值是defaultLookAmount
See:

lookRight(amount)

沿着相机的right方向把相机旋转一定的角度
Name Type Description
amount Number optional 旋转量,弧度为单位,默认值是defaultLookAmount
See:

lookUp(amount)

沿着相机的up方向把相机旋转一定的角度
Name Type Description
amount Number optional 旋转量,弧度为单位,默认值是defaultLookAmount
See:

move(direction, amount)

通过在一定方向上进行平移,改变相机的位置
Name Type Description
direction Cartesian3 移动的方向
amount Number optional 平移量,米为单位,默认值是defaultMoveAmount
See:

moveBackward(amount)

沿着与相机观察相反的方向平移,改变相机位置
Name Type Description
amount Number optional 平移量,米为单位,默认值是defaultMoveAmount
See:

moveDown(amount)

沿着与UP相反的方向平移,改变相机位置
Name Type Description
amount Number optional 平移量,米为单位,默认值是defaultMoveAmount
See:

moveForward(amount)

沿着相机的观察方向平移,改变相机的位置
Name Type Description
amount Number optional 平移量,米为单位,默认值是defaultMoveAmount
See:

moveLeft(amount)

沿着相机的right方向的反方向平移,改变相机位置
Name Type Description
amount Number optional 平移量,米为单位,默认值是defaultMoveAmount
See:

moveRight(amount)

沿着相机的right方向平移,改变相机位置
Name Type Description
amount Number optional 平移量,米为单位,默认值是defaultMoveAmount
See:

moveUp(amount)

沿着相机的UP方向平移,改变相机位置
Name Type Description
amount Number optional 平移量,米为单位,默认值是defaultMoveAmount
See:

setView(options)

设置相机位置、方向和变换
Name Type Description
options Object 对象具有以下属性:
Name Type Description
destination Cartesian3 | Rectangle optional 相机在WGS84世界坐标系中的最终位置,或是自顶向下视图中可见的矩形区域
orientation Object optional 包含了方位(direction)、上方向(up)以及方位角(heading)、俯仰角(pitch)、 滚动角(roll)属性的对象。 默认情况下,3D中方位(direction)指向框架中心,在Columbus视图中指向负z方向。 在3D中上方向(up)指向本地北方向,而在Columbus视图中指向正y方向。在无限滚动模式下,二维视图不使用方向(orientation)
endTransform Matrix4 optional 表示相机参考坐标系的变换矩阵
Example:
// 1.通过top-down视图设置位置
viewer.camera.setView({
    destination : LSGlobe.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});

// 2. 通过方位角、俯仰角、滚动角设置视图
viewer.camera.setView({
    destination : cartesianPosition,
    orientation: {
        heading : LSGlobe.Math.toRadians(90.0), // east, default value is 0.0 (north)
        pitch : LSGlobe.Math.toRadians(-90),    // default value (looking down)
        roll : 0.0                             // default value
    }
});

// 3. 相机空间位置不变,改变方位角、俯仰角和滚动角
viewer.camera.setView({
    orientation: {
        heading : LSGlobe.Math.toRadians(90.0), // east, default value is 0.0 (north)
        pitch : LSGlobe.Math.toRadians(-90),    // default value (looking down)
        roll : 0.0                             // default value
    }
});


// 4. 通过自顶向下视图查看矩形
viewer.camera.setView({
    destination : LSGlobe.Rectangle.fromDegrees(west, south, east, north)
});

// 5. 通过使用单位向量的方向(orientation)设置相机位置
viewer.camera.setView({
    destination : LSGlobe.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
    orientation : {
        direction : new LSGlobe.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
        up : new LSGlobe.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
    }
});

Type Definitions

FlightCancelledCallback()

飞行取消时将执行的功能

FlightCompleteCallback()

飞行完成时将执行的功能