攝像機由位置,方向和視錐臺定義。
方向與視圖形成正交基礎,上和右=視圖x上單位矢量。
視錐由6個平面定義。 每個平面都由
new Camera(scene)
方向與視圖形成正交基礎,上和右=視圖x上單位矢量。
視錐由6個平面定義。 每個平面都由
Cartesian4
對象表示,其中x,y和z分量定義垂直于該平面的單位矢量,而w分量是該平面與原點/相機位置的距離。
Parameters:
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
創(chuàng)建時相機將查看的默認矩形。
(readonly) changed : Event
獲取照相機更改
percentageChanged
時將引發(fā)的事件。
constrainedAxis : Cartesian3
如果設置,相機將無法在任何方向上旋轉超過此軸。
-
Default Value:
undefined
defaultLookAmount : Number
當沒有為Look方法提供參數(shù)時旋轉相機的默認值。
-
Default Value:
Math.PI / 60.0
defaultMoveAmount : Number
移動方法未提供參數(shù)時移動相機的默認值。
-
Default Value:
100000.0;
defaultRotateAmount : Number
當沒有為Rotate方法提供參數(shù)時旋轉相機的默認量。
-
Default Value:
Math.PI / 3600.0
defaultZoomAmount : Number
當沒有為縮放方法提供參數(shù)時移動相機的默認量。
-
Default Value:
100000.0;
direction : Cartesian3
相機的視圖方向。
(readonly) directionWC : Cartesian3
獲取攝像機在世界坐標中的視圖方向。
frustum : Frustum
視野中的空間區(qū)域。
-
Default Value:
PerspectiveFrustum()
See:
(readonly) heading : Number
獲取以弧度表示的相機標題。
(readonly) inverseTransform : Matrix4
獲取逆相機轉換。
-
Default Value:
Matrix4.IDENTITY
(readonly) inverseViewMatrix : Matrix4
獲取逆視圖矩陣。
See:
maximumZoomFactor : Number
乘以從表面縮小時用于確定在何處夾住相機位置的地圖大小的系數(shù)。默認值為1.5。僅對二維有效,地圖可旋轉。
-
Default Value:
1.5
(readonly) moveEnd : Event
獲取相機停止移動時將引發(fā)的事件。
(readonly) moveStart : Event
獲取攝像機開始移動時將引發(fā)的事件。
percentageChanged : number
在
changed
事件發(fā)生之前,相機必須更改的數(shù)量。該值是[0,1]范圍內的百分比。
-
Default Value:
0.5
(readonly) pitch : Number
獲取以弧度表示的相機間距。
position : Cartesian3
相機的位置。
(readonly) positionCartographic : Cartographic
獲取相機的
Cartographic
位置,經(jīng)度和緯度以弧度表示,高度以米為單位。在二維和哥倫布視圖中,當相機位于地圖之外時,返回的經(jīng)度和緯度可能超出有效經(jīng)度和緯度的范圍。
(readonly) positionWC : Cartesian3
獲取攝像機在世界坐標中的位置。
right : Cartesian3
相機的正確方向。
(readonly) rightWC : Cartesian3
獲取攝像機在世界坐標中的正確方向。
(readonly) roll : Number
使相機以弧度滾動。
(readonly) transform : Matrix4
獲取相機的參考幀。這個轉換的逆矩陣被附加到視圖矩陣中。
-
Default Value:
Matrix4.IDENTITY
up : Cartesian3
相機的向上方向。
(readonly) upWC : Cartesian3
獲取攝像機在世界坐標中的向上方向。
(readonly) viewMatrix : Matrix4
獲取視圖矩陣。
Methods
cameraToWorldCoordinates(cartesian, result) → {Cartesian4}
將相機參考幀中的向量或點轉換為世界坐標。
Parameters:
將點從相機的參考幀轉換為世界坐標。
Parameters:
將矢量從相機的參考幀轉換為世界坐標。
Parameters:
如果正在進行,取消當前的相機飛行。相機留在當前位置。
計算橢圓體上的近似可見矩形。
Parameters:
返回從相機到邊界球前面的距離。
Parameters:
將相機轉到主視圖。使用
Camera#.DEFAULT_VIEW_RECTANGLE
設置三維場景的默認視圖。二維和哥倫布視圖的主視圖顯示整個地圖。
Parameters:
將相機從當前位置飛到新位置。
Parameters:
options
(Object)
Name | Description |
---|---|
options.destination
(Cartesian3 | Rectangle)
|
攝像機在WGS84(世界)坐標中的最終位置,或從俯視圖可見的矩形。 |
options.orientation
Object
|
包含方向和向上屬性或航向、縱搖和橫搖屬性的對象。默認情況下,該方向將指向三維中的幀中心,并在Columbus視圖中指向負Z方向。在哥倫布視圖中,向上方向將指向局部北三維方向和正Y方向。在無限滾動模式下,方向不用于二維。 |
options.duration
Number
|
以秒為單位的飛行時間。如果忽略,bigemap-gl將根據(jù)航班要行駛的距離計算理想持續(xù)時間。 |
options.complete
Camera~FlightCompleteCallback
|
飛行完成后執(zhí)行的功能。 |
options.cancel
Camera~FlightCancelledCallback
|
航班取消時執(zhí)行的功能。 |
options.endTransform
Matrix4
|
轉換矩陣表示飛行完成后相機將處于的參考幀。 |
options.maximumHeight
Number
|
飛行高峰期的最大高度。 |
options.pitchAdjustHeight
Number
|
如果相機的飛行速度高于該值,請在飛行過程中調整俯仰以向下看,并將地球保持在視區(qū)中。 |
options.flyOverLongitude
Number
|
地球上兩點之間總是有兩種方式。這個選項強制相機選擇戰(zhàn)斗方向飛越經(jīng)度。 |
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 : 如果給出方向或向上,則兩者都是必需的。
將相機飛到當前視圖包含提供的邊界球體的位置。
偏移量是以邊界球中心為中心的局部東北向上參考框中的航向/俯仰/范圍。航向和俯仰角在本地東北向上參考框架中定義。航向是從Y軸到X軸的角度。螺距是從xy平面開始的旋轉。正俯仰角在平面以下。負的螺距角在平面上方。范圍是距中心的距離。如果范圍為零,則計算范圍以使整個邊界球可見。
在二維和哥倫布視圖中,必須有一個自上而下的視圖。相機將放在目標上方向下看。高于目標的高度將是范圍。航向將與當?shù)乇辈繉R。
Parameters:
options
(Object)
Name | Description |
---|---|
options.duration
Number
|
以秒為單位的飛行時間。如果忽略,bigemap-gl將根據(jù)航班要行駛的距離計算理想持續(xù)時間。 |
options.offset
HeadingPitchRange
|
在以目標為中心的局部東北向上參考幀中距目標的偏移。 |
options.complete
Camera~FlightCompleteCallback
|
飛行完成后執(zhí)行的功能。 |
options.cancel
Camera~FlightCancelledCallback
|
航班取消時執(zhí)行的功能。 |
options.endTransform
Matrix4
|
轉換矩陣表示飛行完成后相機將處于的參考幀。 |
options.maximumHeight
Number
|
飛行高峰期的最大高度。 |
options.pitchAdjustHeight
Number
|
如果相機的飛行速度高于該值,請在飛行過程中調整俯仰以向下看,并將地球保持在視區(qū)中。 |
options.flyOverLongitude
Number
|
地球上兩點之間總是有兩種方式。這個選項強制相機選擇戰(zhàn)斗方向飛越經(jīng)度。 |
options.flyOverLongitudeWeight
Number
|
只有在飛行長度不超過飛行長度的短距離乘以飛行長度重量時,才能飛越飛行長度指定的長度。 |
options.easingFunction
(EasingFunction | EasingFunction~Callback)
|
控制在飛行期間如何插入時間。 |
獲取相機位置的大小。在3D中,這是矢量大小。在二維和哥倫布視圖中,這是到地圖的距離。
從相機位置通過世界坐標中
windowPosition
處的像素創(chuàng)建光線。
Parameters:
返回以米為單位的像素大小。
Parameters:
drawingBufferWidth
(Number)
繪圖緩沖區(qū)寬度。
drawingBufferHeight
(Number)
繪圖緩沖區(qū)高度。
獲取在橢球體或地圖上查看矩形所需的相機位置
Parameters:
將相機的每個方向向量圍繞
axis
旋轉angle
Parameters:
angle
(Number)
以弧度表示的旋轉角度。默認為defaultLookAmount
。
使用目標和偏移設置相機位置和方向。目標必須以世界坐標給出。偏移可以是笛卡爾坐標系,也可以是以目標為中心的東北向上局部參照系中的航向/俯仰/范圍。如果偏移量是笛卡爾坐標系的,那么它是相對于由變換矩陣定義的參照系中心的偏移量。如果偏移量為航向/俯仰/范圍,則航向和俯仰角在變換矩陣定義的參考框中定義。航向是從Y軸到X軸的角度。螺距是從xy平面開始的旋轉。正俯仰角在平面以下。負的螺距角在平面上方。范圍是距中心的距離。在2d中,必須有一個自頂向下的視圖。相機將放在目標上方向下看。目標上方的高度將是偏移量的大小。航向將根據(jù)偏移量確定。如果無法從偏移量確定航向,則航向將為北。
Parameters:
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
-
DeveloperError : 變形時不支持LookAt。
使用目標和變換矩陣設置相機位置和方向。偏移量可以是笛卡爾或航向/俯仰/范圍。如果偏移量是笛卡爾坐標系的,那么它是相對于由變換矩陣定義的參照系中心的偏移量。如果偏移量為航向/俯仰/范圍,則航向和俯仰角在變換矩陣定義的參考框中定義。航向是從Y軸到X軸的角度。螺距是從xy平面開始的旋轉。正俯仰角在平面以下。負的螺距角在平面上方。范圍是距中心的距離。在2d中,必須有一個自頂向下的視圖。相機將放置在參考框架的中心上方。目標上方的高度將是偏移量的大小。航向將根據(jù)偏移量確定。如果無法從偏移量確定航向,則航向將為北。
Parameters:
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
-
DeveloperError : 變形時不支持LookAtTransform。
如果不是在二維模式下,則沿其上方向向量的相反方向,以弧度圍繞其右向量旋轉相機。
Parameters:
amount
(Number)
以弧度表示的旋轉量。默認為defaultLookAmount
。
See:
如果不是在二維模式下,則沿其右向量的相反方向,以弧度為單位,圍繞其上方向向量旋轉相機。
Parameters:
amount
(Number)
以弧度表示的旋轉量。默認為defaultLookAmount
。
See:
如果不是在二維模式下,則沿其右向量的方向,以弧度為單位,圍繞其上方向向量旋轉相機。
Parameters:
amount
(Number)
以弧度表示的旋轉量。默認為defaultLookAmount
。
See:
如果不是在二維模式下,則將相機繞其右向量以弧度的數(shù)量沿其上方向旋轉。
Parameters:
amount
(Number)
以弧度表示的旋轉量。默認為defaultLookAmount
。
See:
將相機位置沿
direction
轉換amount
。
Parameters:
amount
(Number)
以米為單位的移動量。默認為defaultMoveAmount
。
See:
沿相機視圖向量的相反方向,將相機的位置轉換為
amount
。在二維模式下,這將縮小相機,而不是平移相機的位置。
Parameters:
amount
(Number)
以米為單位的移動量。默認為defaultMoveAmount
。
See:
沿相機上方向向量的相反方向,將相機的位置轉換為
amount
。
Parameters:
amount
(Number)
以米為單位的移動量。默認為defaultMoveAmount
。
See:
沿相機的視圖向量將相機的位置轉換為
amount
。在二維模式下,這將放大相機,而不是平移相機的位置。
Parameters:
amount
(Number)
以米為單位的移動量。默認為defaultMoveAmount
。
See:
沿相機右向量的相反方向,將相機的位置平移
amount
。
Parameters:
amount
(Number)
以米為單位的移動量。默認為defaultMoveAmount
。
See:
沿相機的右向量將相機的位置轉換為
amount
。
Parameters:
amount
(Number)
以米為單位的移動量。默認為defaultMoveAmount
。
See:
沿相機的上方向向量將相機的位置轉換為
amount
。
Parameters:
amount
(Number)
以米為單位的移動量。默認為defaultMoveAmount
。
See:
選擇橢球體或地圖。
Parameters:
將相機繞
axis
旋轉angle
。相機位置到相機參考幀中心的距離保持不變。
Parameters:
angle
(Number)
以弧度表示的旋轉角度。默認為defaultRotateAmount
。
以向下的角度圍繞相機參考幀的中心旋轉相機。
Parameters:
angle
(Number)
以弧度表示的旋轉角度。默認為defaultRotateAmount
。
以向左的角度圍繞相機參考幀的中心旋轉相機。
Parameters:
angle
(Number)
以弧度表示的旋轉角度。默認為defaultRotateAmount
。
以向右的角度圍繞相機參考幀的中心旋轉相機。
Parameters:
angle
(Number)
以弧度表示的旋轉角度。默認為defaultRotateAmount
。
以向上的角度圍繞相機參考幀的中心旋轉相機。
Parameters:
angle
(Number)
以弧度表示的旋轉角度。默認為defaultRotateAmount
。
設置相機位置、方向和變換。
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)
}
});
將截錐/投影切換為正交。此函數(shù)在二維中是不可操作的,它始終是正交的。
將截錐/投影切換到透視。此函數(shù)在二維中是禁止運算的,它必須始終是正交的。
逆時針旋轉相機,以一定的弧度圍繞其方向向量旋轉。
Parameters:
amount
(Number)
以弧度表示的旋轉量。默認為defaultLookAmount
。
See:
將相機沿其方向向量順時針旋轉一定數(shù)量,以弧度為單位。
Parameters:
amount
(Number)
以弧度表示的旋轉量。默認為defaultLookAmount
。
See:
設置相機,使當前視圖包含提供的邊界球體。
偏移量是以邊界球中心為中心的局部東北向上參考框中的航向/俯仰/范圍。航向和俯仰角在本地東北向上參考框架中定義。航向是從Y軸到X軸的角度。螺距是從xy平面開始的旋轉。正俯仰角在平面以下。負的螺距角在平面上方。范圍是距中心的距離。如果范圍為零,則計算范圍以使整個邊界球體可見。
在二維中,必須有一個俯視圖。相機將放在目標上方向下看。高于目標的高度將是范圍。航向將根據(jù)偏移量確定。如果無法從偏移量確定航向,則航向將為北。
Parameters:
Throws
-
DeveloperError : 變形時不支持ViewBoundingSphere。
將一個向量或點從世界坐標轉換到相機的參考幀。
Parameters:
將點從世界坐標轉換為相機的參考幀。
Parameters:
將矢量從世界坐標轉換為相機的參考幀。
Parameters:
沿相機的視圖向量縮放
amount
。
Parameters:
amount
(Number)
要移動的數(shù)量。默認為defaultZoomAmount
。
See:
沿相機視圖向量的相反方向縮放
amount
。
Parameters:
amount
(Number)
要移動的數(shù)量。默認為defaultZoomAmount
。
See:
Type Definitions
FlightCancelledCallback()
當航班取消時執(zhí)行的一種功能。
一種在飛行結束時執(zhí)行的功能。