Class: CameraManager
相机管理类
Details
相机飞行定位(到固定位置、虚拟节点)、获取相机位置参数、获取三维点到相机位置的距离、获取三维点转屏幕点坐标、设置相机速度方向和高度等等
Examples
const cameraManager = await cloud.getCameraManager(); // 在CreateApp时调用
const cameraManager = await cloud.getCameraManager(); // 在CreateApp时调用
Hierarchy
Callable
↳
CameraManager
Methods
getView
▸ getView(): Promise
<CartesianView
>
Details
获取当前相机视角信息、三维模式
Examples
调用示例:
const cameraManager = await cloud.getCameraManager();
let viewObj = await cameraManager.getView();
const cameraManager = await cloud.getCameraManager();
let viewObj = await cameraManager.getView();
Returns
Promise
<CartesianView
>
当前相机视角信息, CartesianView
getView_Gcs
▸ getView_Gcs(): Promise
<EarthView
>
Details
获取当前相机视角信息、Gis模式
Examples
调用示例:
const cameraManager = await cloud.getCameraManager();
let viewObj = await cameraManager.getView_Gcs();
const cameraManager = await cloud.getCameraManager();
let viewObj = await cameraManager.getView_Gcs();
Returns
Promise
<EarthView
>
当前相机视角信息, EarthView
setView
▸ setView(cameraView
): Promise
<any
>
Details
设置相机视角、三维模式
Examples
let cameraManager = await cloud.getCameraManager();
let setViewObj = {
location:{x:60.113468170166016, y:99.99943542480469, z:59.71105194091797},
eulerAngle: {heading:-135, pitch:45, roll:0},
focus: {x:57.613433837890625, y:96.46395111083984, z:57.21101760864258},
}
let log = await cameraManager.setView(setViewObj);
let cameraManager = await cloud.getCameraManager();
let setViewObj = {
location:{x:60.113468170166016, y:99.99943542480469, z:59.71105194091797},
eulerAngle: {heading:-135, pitch:45, roll:0},
focus: {x:57.613433837890625, y:96.46395111083984, z:57.21101760864258},
}
let log = await cameraManager.setView(setViewObj);
Parameters
Name | Type | Description |
---|---|---|
cameraView | CartesianView | 当前相机视角信息,CartesianView |
Returns
Promise
<any
>
setView_Gcs
▸ setView_Gcs(cameraView
): Promise
<any
>
Details
设置相机视角、Gis模式
Examples
let cameraManager = await cloud.getCameraManager();
const trans: GCSTransform = {
lonLatAlt: new LonLatAlt(113.230893, 32.990833, 20),
eulerAngle: new Euler(0, 0, 0),
scaling: new Vector3(1, 1, 1),
};
const view: EarthView = {
transform: trans,
focus: new LonLatAlt(113.230893, 32.990833, 20),
};
let log = await cameraManager.setView_Gcs(view);
let cameraManager = await cloud.getCameraManager();
const trans: GCSTransform = {
lonLatAlt: new LonLatAlt(113.230893, 32.990833, 20),
eulerAngle: new Euler(0, 0, 0),
scaling: new Vector3(1, 1, 1),
};
const view: EarthView = {
transform: trans,
focus: new LonLatAlt(113.230893, 32.990833, 20),
};
let log = await cameraManager.setView_Gcs(view);
Parameters
Name | Type | Description |
---|---|---|
cameraView | EarthView | 当前相机视角信息,EarthView |
Returns
Promise
<any
>
flyToObserverPoint
▸ flyToObserverPoint(cameraPos
, target
, time
, Callback?
): Promise
<any
>
Details
飞向观察点+目标点 、三维模式
Examples
let cameraManager = await cloud.getCameraManager();
let cameraPos = { x: 60, y: 69, z: 60 };
var target = { x: 0, y: 0, z: 0 };
let view = await cloud.cameraManager.flyToObserverPoint(cameraPos, target, 2000,observerCallBack);
function observerCallBack(viewInfo: CartesianView) {
console.warn('飞向观察点+目标点,回调');
console.warn(viewInfo);
}
let cameraManager = await cloud.getCameraManager();
let cameraPos = { x: 60, y: 69, z: 60 };
var target = { x: 0, y: 0, z: 0 };
let view = await cloud.cameraManager.flyToObserverPoint(cameraPos, target, 2000,observerCallBack);
function observerCallBack(viewInfo: CartesianView) {
console.warn('飞向观察点+目标点,回调');
console.warn(viewInfo);
}
Parameters
Name | Type | Description |
---|---|---|
cameraPos | Vector3 | 观察点, 参数类型为 Vector3 |
target | Vector3 | 目标点, 参数类型为Vector3 |
time | number | 飞行所经历的时间(毫秒) |
Callback? | any | 自定义回调方法 |
Returns
Promise
<any
>
flyToObserverPoint_Gcs
▸ flyToObserverPoint_Gcs(cameraPos
, target
, time
, Callback?
): Promise
<any
>
Details
飞向观察点+目标点 、Gis模式
Examples
const gisLayerManager = await cloud.getGisLayerManager();
let earthView = gisLayerManager.GetlayerBestGlobeCameraView("111");
let cameraManager = await cloud.getCameraManager();
let view = await cloud.cameraManager.flyToObserverPoint_Gcs(earthView.transform, earthView.focus, 2000,observerCallBack);
function observerCallBack(viewInfo: EarthView) {
console.warn('飞向观察点+目标点,回调');
console.warn(viewInfo);
}
const gisLayerManager = await cloud.getGisLayerManager();
let earthView = gisLayerManager.GetlayerBestGlobeCameraView("111");
let cameraManager = await cloud.getCameraManager();
let view = await cloud.cameraManager.flyToObserverPoint_Gcs(earthView.transform, earthView.focus, 2000,observerCallBack);
function observerCallBack(viewInfo: EarthView) {
console.warn('飞向观察点+目标点,回调');
console.warn(viewInfo);
}
Parameters
Name | Type | Description |
---|---|---|
cameraPos | GCSTransform | 观察点, 参数类型为 GCSTransform |
target | LonLatAlt | 目标点, 参数类型为 LonLatAlt |
time | number | 飞行所经历的时间(毫秒) |
Callback? | any | 自定义回调方法 |
Returns
Promise
<any
>
flyToEulerAnglePoint
▸ flyToEulerAnglePoint(cameraPos
, euler
, focus
, time
, Callback?
): Promise
<any
>
Details
飞向某个点以欧拉角方向的方式、三维模式
Examples
let cameraManager = await cloud.getCameraManager();
let cameraPos = { x: 60, y: 69, z: 60 };
var euler = { heading:-135, pitch:45, roll:0 };
let focus = { x: 50, y: 100, z: 50 };
let view = await cloud.cameraManager.flyToEulerAnglePoint(cameraPos, euler, focus,2000,eulerAngleCallBack);
function eulerAngleCallBack(viewInfo: CartesianView) {
console.warn('飞向某个点以欧拉角方向的方式,回调');
console.warn(viewInfo);
}
let cameraManager = await cloud.getCameraManager();
let cameraPos = { x: 60, y: 69, z: 60 };
var euler = { heading:-135, pitch:45, roll:0 };
let focus = { x: 50, y: 100, z: 50 };
let view = await cloud.cameraManager.flyToEulerAnglePoint(cameraPos, euler, focus,2000,eulerAngleCallBack);
function eulerAngleCallBack(viewInfo: CartesianView) {
console.warn('飞向某个点以欧拉角方向的方式,回调');
console.warn(viewInfo);
}
Parameters
Name | Type | Description |
---|---|---|
cameraPos | Vector3 | 观察点, 参数类型为 Vector3 |
euler | Euler | 欧拉角, 参数类型为 Euler |
focus | Vector3 | 目标点, 参数类型为 Vector3 |
time | number | 飞行所经历的时间(毫秒) |
Callback? | any | 自定义回调方法 |
Returns
Promise
<any
>
flyToEulerAnglePoint_Gcs
▸ flyToEulerAnglePoint_Gcs(cameraPos
, focus
, time
, Callback?
): Promise
<any
>
Details
飞向某个点以欧拉角方向的方式、Gis模式
Examples
const gcsTrans: GCSTransform = {
lonLatAlt: new LonLatAlt(100, 50, 30),
eulerAngle: new Euler(0, 90, 0),
scaling: new Vector3(1, 1, 1),
};
const focus = new LonLatAlt(99,49,29);
let log = await cameraManager.flyToEulerAnglePoint_Gcs(gcsTrans,focus,2000,eulerAngleCallBack);
function eulerAngleCallBack(viewInfo: EarthView) {
console.warn('飞向某个点以欧拉角方向的方式,回调');
console.warn(viewInfo);
}
const gcsTrans: GCSTransform = {
lonLatAlt: new LonLatAlt(100, 50, 30),
eulerAngle: new Euler(0, 90, 0),
scaling: new Vector3(1, 1, 1),
};
const focus = new LonLatAlt(99,49,29);
let log = await cameraManager.flyToEulerAnglePoint_Gcs(gcsTrans,focus,2000,eulerAngleCallBack);
function eulerAngleCallBack(viewInfo: EarthView) {
console.warn('飞向某个点以欧拉角方向的方式,回调');
console.warn(viewInfo);
}
Parameters
Name | Type | Description |
---|---|---|
cameraPos | GCSTransform | 位置姿态, 参数类型为 GCSTransform |
focus | LonLatAlt | 目标点, 参数类型为 LonLatAlt |
time | number | 飞行所经历的时间(毫秒) |
Callback? | any | 自定义回调方法 |
Returns
Promise
<any
>
flyToDirectionPoint
▸ flyToDirectionPoint(cameraPos
, direction
, focus
, time
, Callback?
): Promise
<any
>
Details
飞向某个点以向量方向的方式、三维模式
Examples
let cameraManager = await cloud.getCameraManager();
let cameraPos = { x: 60, y: 100, z: 60 };
var direction = { x:1, y:0, z:0 };
let focus = { x: 50, y: 100, z: 50 };
let view = await cloud.cameraManager.flyToDirectionPoint(cameraPos, direction, focus,2000,directionCallBack);
function directionCallBack(viewInfo: CartesianView) {
console.warn('飞向某个点以向量方向的方式,回调');
console.warn(viewInfo);
}
let cameraManager = await cloud.getCameraManager();
let cameraPos = { x: 60, y: 100, z: 60 };
var direction = { x:1, y:0, z:0 };
let focus = { x: 50, y: 100, z: 50 };
let view = await cloud.cameraManager.flyToDirectionPoint(cameraPos, direction, focus,2000,directionCallBack);
function directionCallBack(viewInfo: CartesianView) {
console.warn('飞向某个点以向量方向的方式,回调');
console.warn(viewInfo);
}
Parameters
Name | Type | Description |
---|---|---|
cameraPos | Vector3 | 观察点, 参数类型为 Vector3 |
direction | Vector3 | 方向, 参数类型为 Vector3 |
focus | Vector3 | 目标点, 参数类型为 Vector3 |
time | number | 飞行所经历的时间(毫秒) |
Callback? | any | 自定义回调方法 |
Returns
Promise
<any
>
flyToDirectionPoint_Gcs
▸ flyToDirectionPoint_Gcs(cameraPos
, direction
, focus
, time
, Callback?
): Promise
<any
>
Details
飞向某个点以向量方向的方式、Gis模式
Examples
let cameraManager = await cloud.getCameraManager();
let cameraPos = new LonLatAlt(100, 50, 30);
var direction = new Vector3(1, 1, 1);
let focus = new LonLatAlt(99, 49, 29);
let view = await cloud.cameraManager.flyToDirectionPoint_Gcs(cameraPos, direction, focus,2000,directionCallBack);
function directionCallBack(viewInfo: EarthView) {
console.warn('飞向某个点以向量方向的方式,回调');
console.warn(viewInfo);
}
let cameraManager = await cloud.getCameraManager();
let cameraPos = new LonLatAlt(100, 50, 30);
var direction = new Vector3(1, 1, 1);
let focus = new LonLatAlt(99, 49, 29);
let view = await cloud.cameraManager.flyToDirectionPoint_Gcs(cameraPos, direction, focus,2000,directionCallBack);
function directionCallBack(viewInfo: EarthView) {
console.warn('飞向某个点以向量方向的方式,回调');
console.warn(viewInfo);
}
Parameters
Name | Type | Description |
---|---|---|
cameraPos | LonLatAlt | 观察点, 参数类型为 LonLatAlt |
direction | Vector3 | 方向, 参数类型为 Vector3 |
focus | LonLatAlt | 目标点, 参数类型为 LonLatAlt |
time | number | 飞行所经历的时间(毫秒) |
Callback? | any | 自定义回调方法 |
Returns
Promise
<any
>
getNodeObservationView
▸ getNodeObservationView(node
, limitRange?
, pos?
, disMul?
): Promise
<CartesianView
>
Details
获取节点的最佳观测位置
Examples
let cameraManager = await cloud.getCameraManager();
let sceManager =await cloud.getSceneManager();
let node = await sceManager.getRootNode3D()
const info: LimitRange =
{
expand: 1,
minPitchAngle: -90,
maxPitchAngle: 90,
minHeadingAngle: -180,
maxHeadingAngle: 180,
};
let log = await cameraManager.getNodeObservationView(node,info,3,1.5);
let cameraManager = await cloud.getCameraManager();
let sceManager =await cloud.getSceneManager();
let node = await sceManager.getRootNode3D()
const info: LimitRange =
{
expand: 1,
minPitchAngle: -90,
maxPitchAngle: 90,
minHeadingAngle: -180,
maxHeadingAngle: 180,
};
let log = await cameraManager.getNodeObservationView(node,info,3,1.5);
Parameters
Name | Type | Description |
---|---|---|
node | Node | 节点对象 |
limitRange? | LimitRange | 视角限制范围(绝对值最大的为最大角度) |
pos? | EnPosType | 相机方向 默认为自动 传入值为EnPosType 对应的数字 |
disMul? | number | 相机距离目标点包围盒长度的倍数 默认为1.5 相机方向为自动时该参数无效, 最大值建议不超过10 |
Returns
Promise
<CartesianView
>
返回最佳观测点位置, 类型为CartesianView
getNodeObservationView_Gcs
▸ getNodeObservationView_Gcs(node
, limitRange?
): Promise
<EarthView
>
Details
获取节点的全球最佳观测位置,Gis模式
Examples
let cameraManager = await cloud.getCameraManager();
let sceManager =await cloud.getSceneManager();
let node = await sceManager.getRootNode3D()
const info: LimitRange =
{
expand: 1,
minPitchAngle: -90,
maxPitchAngle: 90,
minHeadingAngle: -180,
maxHeadingAngle: 180,
};
let olg = await cameraManager.getNodeObservationView_Gcs(node,info);
let cameraManager = await cloud.getCameraManager();
let sceManager =await cloud.getSceneManager();
let node = await sceManager.getRootNode3D()
const info: LimitRange =
{
expand: 1,
minPitchAngle: -90,
maxPitchAngle: 90,
minHeadingAngle: -180,
maxHeadingAngle: 180,
};
let olg = await cameraManager.getNodeObservationView_Gcs(node,info);
Parameters
Name | Type | Description |
---|---|---|
node | Node | 节点对象 |
limitRange? | LimitRange | 视角限制范围(绝对值最大的为最大角度) |
Returns
Promise
<EarthView
>
返回全球最佳观测点位置, 类型为EarthView
setKeyboardControlForCamera
▸ setKeyboardControlForCamera(iskeyBoardCtrl
): Promise
<any
>
Details
设置是否允许键盘控制相机
Examples
let cameraManager = await cloud.getCameraManager();
await cameraManager.setKeyboardControlForCamera(true);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setKeyboardControlForCamera(true);
Parameters
Name | Type | Description |
---|---|---|
iskeyBoardCtrl | boolean | true允许 |
Returns
Promise
<any
>
isKeyboardControlForCamera
▸ isKeyboardControlForCamera(): Promise
<boolean
>
Details
获取是否允许键盘对相机进行控制
Examples
let cameraManager = await cloud.getCameraManager();
const state = await cameraManager.isKeyboardControlForCamera();
let cameraManager = await cloud.getCameraManager();
const state = await cameraManager.isKeyboardControlForCamera();
Returns
Promise
<boolean
>
true 允许键盘控制
setCameraSpeed
▸ setCameraSpeed(speed
): Promise
<any
>
Details
设置键盘控制相机时的移动速度(不影响鼠标的控制速度)(默认速度2.5m/s)
Examples
let cameraManager = await cloud.getCameraManager();
await cameraManager.setCameraSpeed(5);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setCameraSpeed(5);
Parameters
Name | Type | Description |
---|---|---|
speed | number | 相机移动速度m/s |
Returns
Promise
<any
>
getCameraSpeed
▸ getCameraSpeed(): Promise
<number
>
Details
获取键盘控制相机的移动速度(m/s)
Examples
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getCameraSpeed();
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getCameraSpeed();
Returns
Promise
<number
>
相机当前移动速度
setCameraRange
▸ setCameraRange(range
): Promise
<any
>
Details
设置相机的活动范围,需要取消相机活动范围时传递参数null
Examples
let cameraManager = await cloud.getCameraManager();
const max = new Vector3(500, 500, 500)
const min = new Vector3(0, 0, 0)
const box = new Box3(min, max)
await cameraManager.setCameraRange(box);
let cameraManager = await cloud.getCameraManager();
const max = new Vector3(500, 500, 500)
const min = new Vector3(0, 0, 0)
const box = new Box3(min, max)
await cameraManager.setCameraRange(box);
Parameters
Name | Type | Description |
---|---|---|
range | null | Box3 | 相机活动范围 |
Returns
Promise
<any
>
setCameraRange_Gcs
▸ setCameraRange_Gcs(range
): Promise
<any
>
Details
设置相机的活动范围,需要取消相机活动范围时传递参数null,Gis模式
Examples
const range: LonLatAltRange = {
minPos: new LonLatAlt(100,50,30),
maxPos: new LonLatAlt(100.1, 50.1, 130),
};
await cameraManager.setCameraRange_Gcs(range);
const range: LonLatAltRange = {
minPos: new LonLatAlt(100,50,30),
maxPos: new LonLatAlt(100.1, 50.1, 130),
};
await cameraManager.setCameraRange_Gcs(range);
Parameters
Name | Type | Description |
---|---|---|
range | null | LonLatAltRange | 相机活动范围 |
Returns
Promise
<any
>
getCameraRange
▸ getCameraRange(): Promise
<null
| Box3
>
Details
获取相机活动范围,当相机活动范围无限制时返回null
Examples
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getCameraRange();
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getCameraRange();
Returns
Promise
<null
| Box3
>
相机活动范围
getCameraRange_Gcs
▸ getCameraRange_Gcs(): Promise
<null
| LonLatAltRange
>
Details
获取相机活动范围,当相机活动范围无限制时返回null
Examples
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getCameraRange_Gcs();
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getCameraRange_Gcs();
Returns
Promise
<null
| LonLatAltRange
>
相机活动范围
setLockPitchAngle
▸ setLockPitchAngle(lock
): Promise
<any
>
Details
对相机俯仰角范围进行限制(默认-90至90)
Examples
let cameraManager = await cloud.getCameraManager();
const temp: LockPitchAngle
= {
minPitch: 0,
maxPitch: 90,
}
await cameraManager.setLockPitchAngle(temp);
let cameraManager = await cloud.getCameraManager();
const temp: LockPitchAngle
= {
minPitch: 0,
maxPitch: 90,
}
await cameraManager.setLockPitchAngle(temp);
Parameters
Name | Type | Description |
---|---|---|
lock | LockPitchAngle | 相机俯仰角 |
Returns
Promise
<any
>
getLockPitchAngle
▸ getLockPitchAngle(): Promise
<LockPitchAngle
>
Details
获取相机俯仰角范围
Examples
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getLockPitchAngle();
let cameraManager = await cloud.getCameraManager();
const ret = await cameraManager.getLockPitchAngle();
Returns
Promise
<LockPitchAngle
>
相机俯仰角范围
orthographicViews
▸ orthographicViews(isOrtho
): Promise
<any
>
Details
切换相机为正交模式(默认为透视模式),ture为正交模式,false为透视模式
Examples
let cameraManager = await cloud.getCameraManager();
await cameraManager.orthographicViews(true);
let cameraManager = await cloud.getCameraManager();
await cameraManager.orthographicViews(true);
Parameters
Name | Type | Description |
---|---|---|
isOrtho | boolean | 是否为正交模式 |
Returns
Promise
<any
>
SetHoverTargetUpdateMode
▸ SetHoverTargetUpdateMode(type
): Promise
<number
>
Details
设置旋转中心更新方式(固定,缩放时设置,视口中心)
Examples
let cameraManager = await cloud.getCameraManager();
const type:EnHoverTargetUpdateMode=1;
var state=await cloud.cameramanage.SetHoverTargetUpdateMode(type);
let cameraManager = await cloud.getCameraManager();
const type:EnHoverTargetUpdateMode=1;
var state=await cloud.cameramanage.SetHoverTargetUpdateMode(type);
Parameters
Name | Type | Description |
---|---|---|
type | EnHoverTargetUpdateMode | 1 固定位置,需要设置相机聚焦点位置 cameraFocus 2 鼠标位置对应的场景位置(默认) 3 视口中心对应的场景位置 |
Returns
Promise
<number
>
setClipDistance
▸ setClipDistance(enable
, nearClipDistance?
, farClipDistance?
): Promise
<boolean
>
Details
设置相机远近裁剪面距离
Examples
let cameraManager = await cloud.getCameraManager();
await cameraManager.setClipDistance(false,1,3000);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setClipDistance(false,1,3000);
Parameters
Name | Type | Description |
---|---|---|
enable | boolean | 是否为自动设置剪裁面 为true时后两个参数设置无效 |
nearClipDistance? | number | 近剪裁面值(需小于远裁剪面,否则值为远剪裁面值-0.1) |
farClipDistance? | number | 远剪裁面值 |
Returns
Promise
<boolean
>
是否成功
setHorizontalFieldOfView
▸ setHorizontalFieldOfView(fovy
): Promise
<boolean
>
Details
设置相机张角
Examples
let cameraManager = await cloud.getCameraManager();
await cameraManager.setHorizontalFieldOfView(45);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setHorizontalFieldOfView(45);
Parameters
Name | Type | Description |
---|---|---|
fovy | number | 相机张角(>0) |
Returns
Promise
<boolean
>
是否成功
setInertia
▸ setInertia(inertia
): Promise
<boolean
>
Details
设置相机惯性
Examples
let cameraManager = await cloud.getCameraManager();
await cameraManager.setInertia(0.7);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setInertia(0.7);
Parameters
Name | Type | Description |
---|---|---|
inertia | number | 相机惯性[0,1] |
Returns
Promise
<boolean
>
是否成功