Skip to content
导览

Class: CameraManager

相机管理类

Details

相机飞行定位(到固定位置、虚拟节点)、获取相机位置参数、获取三维点到相机位置的距离、获取三维点转屏幕点坐标、设置相机速度方向和高度等等

Examples

ts
const cameraManager = await cloud.getCameraManager();   // 在CreateApp时调用
const cameraManager = await cloud.getCameraManager();   // 在CreateApp时调用

Hierarchy

  • Callable

    CameraManager

Methods

getView

getView(): Promise<CartesianView>

Details

获取当前相机视角信息、三维模式

Examples

调用示例:

js
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

调用示例:

js
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

js
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

NameTypeDescription
cameraViewCartesianView当前相机视角信息,CartesianView

Returns

Promise<any>


setView_Gcs

setView_Gcs(cameraView): Promise<any>

Details

设置相机视角、Gis模式

Examples

js
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

NameTypeDescription
cameraViewEarthView当前相机视角信息,EarthView

Returns

Promise<any>


flyToObserverPoint

flyToObserverPoint(cameraPos, target, time, Callback?): Promise<any>

Details

飞向观察点+目标点 、三维模式

Examples

js
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

NameTypeDescription
cameraPosVector3观察点, 参数类型为 Vector3
targetVector3目标点, 参数类型为Vector3
timenumber飞行所经历的时间(毫秒)
Callback?any自定义回调方法

Returns

Promise<any>


flyToObserverPoint_Gcs

flyToObserverPoint_Gcs(cameraPos, target, time, Callback?): Promise<any>

Details

飞向观察点+目标点 、Gis模式

Examples

js
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

NameTypeDescription
cameraPosGCSTransform观察点, 参数类型为 GCSTransform
targetLonLatAlt目标点, 参数类型为 LonLatAlt
timenumber飞行所经历的时间(毫秒)
Callback?any自定义回调方法

Returns

Promise<any>


flyToEulerAnglePoint

flyToEulerAnglePoint(cameraPos, euler, focus, time, Callback?): Promise<any>

Details

飞向某个点以欧拉角方向的方式、三维模式

Examples

js
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

NameTypeDescription
cameraPosVector3观察点, 参数类型为 Vector3
eulerEuler欧拉角, 参数类型为 Euler
focusVector3目标点, 参数类型为 Vector3
timenumber飞行所经历的时间(毫秒)
Callback?any自定义回调方法

Returns

Promise<any>


flyToEulerAnglePoint_Gcs

flyToEulerAnglePoint_Gcs(cameraPos, focus, time, Callback?): Promise<any>

Details

飞向某个点以欧拉角方向的方式、Gis模式

Examples

js
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

NameTypeDescription
cameraPosGCSTransform位置姿态, 参数类型为 GCSTransform
focusLonLatAlt目标点, 参数类型为 LonLatAlt
timenumber飞行所经历的时间(毫秒)
Callback?any自定义回调方法

Returns

Promise<any>


flyToDirectionPoint

flyToDirectionPoint(cameraPos, direction, focus, time, Callback?): Promise<any>

Details

飞向某个点以向量方向的方式、三维模式

Examples

js
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

NameTypeDescription
cameraPosVector3观察点, 参数类型为 Vector3
directionVector3方向, 参数类型为 Vector3
focusVector3目标点, 参数类型为 Vector3
timenumber飞行所经历的时间(毫秒)
Callback?any自定义回调方法

Returns

Promise<any>


flyToDirectionPoint_Gcs

flyToDirectionPoint_Gcs(cameraPos, direction, focus, time, Callback?): Promise<any>

Details

飞向某个点以向量方向的方式、Gis模式

Examples

js
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

NameTypeDescription
cameraPosLonLatAlt观察点, 参数类型为 LonLatAlt
directionVector3方向, 参数类型为 Vector3
focusLonLatAlt目标点, 参数类型为 LonLatAlt
timenumber飞行所经历的时间(毫秒)
Callback?any自定义回调方法

Returns

Promise<any>


getNodeObservationView

getNodeObservationView(node, limitRange?, pos?, disMul?): Promise<CartesianView>

Details

获取节点的最佳观测位置

Examples

js
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

NameTypeDescription
nodeNode节点对象
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

js
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

NameTypeDescription
nodeNode节点对象
limitRange?LimitRange视角限制范围(绝对值最大的为最大角度)

Returns

Promise<EarthView>

返回全球最佳观测点位置, 类型为EarthView


setKeyboardControlForCamera

setKeyboardControlForCamera(iskeyBoardCtrl): Promise<any>

Details

设置是否允许键盘控制相机

Examples

js
let cameraManager = await cloud.getCameraManager();
await cameraManager.setKeyboardControlForCamera(true);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setKeyboardControlForCamera(true);

Parameters

NameTypeDescription
iskeyBoardCtrlbooleantrue允许

Returns

Promise<any>


isKeyboardControlForCamera

isKeyboardControlForCamera(): Promise<boolean>

Details

获取是否允许键盘对相机进行控制

Examples

js
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

js
let cameraManager = await cloud.getCameraManager();
await cameraManager.setCameraSpeed(5);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setCameraSpeed(5);

Parameters

NameTypeDescription
speednumber相机移动速度m/s

Returns

Promise<any>


getCameraSpeed

getCameraSpeed(): Promise<number>

Details

获取键盘控制相机的移动速度(m/s)

Examples

js
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

js
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

NameTypeDescription
rangenull | Box3相机活动范围

Returns

Promise<any>


setCameraRange_Gcs

setCameraRange_Gcs(range): Promise<any>

Details

设置相机的活动范围,需要取消相机活动范围时传递参数null,Gis模式

Examples

js
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

NameTypeDescription
rangenull | LonLatAltRange相机活动范围

Returns

Promise<any>


getCameraRange

getCameraRange(): Promise<null | Box3>

Details

获取相机活动范围,当相机活动范围无限制时返回null

Examples

js
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

js
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

js
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

NameTypeDescription
lockLockPitchAngle相机俯仰角

Returns

Promise<any>


getLockPitchAngle

getLockPitchAngle(): Promise<LockPitchAngle>

Details

获取相机俯仰角范围

Examples

js
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

js
let cameraManager = await cloud.getCameraManager();
await cameraManager.orthographicViews(true);
let cameraManager = await cloud.getCameraManager();
await cameraManager.orthographicViews(true);

Parameters

NameTypeDescription
isOrthoboolean是否为正交模式

Returns

Promise<any>


SetHoverTargetUpdateMode

SetHoverTargetUpdateMode(type): Promise<number>

Details

设置旋转中心更新方式(固定,缩放时设置,视口中心)

Examples

js
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

NameTypeDescription
typeEnHoverTargetUpdateMode1 固定位置,需要设置相机聚焦点位置 cameraFocus 2 鼠标位置对应的场景位置(默认) 3 视口中心对应的场景位置

Returns

Promise<number>


setClipDistance

setClipDistance(enable, nearClipDistance?, farClipDistance?): Promise<boolean>

Details

设置相机远近裁剪面距离

Examples

js
let cameraManager = await cloud.getCameraManager();
await cameraManager.setClipDistance(false,1,3000);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setClipDistance(false,1,3000);

Parameters

NameTypeDescription
enableboolean是否为自动设置剪裁面 为true时后两个参数设置无效
nearClipDistance?number近剪裁面值(需小于远裁剪面,否则值为远剪裁面值-0.1)
farClipDistance?number远剪裁面值

Returns

Promise<boolean>

是否成功


setHorizontalFieldOfView

setHorizontalFieldOfView(fovy): Promise<boolean>

Details

设置相机张角

Examples

js
let cameraManager = await cloud.getCameraManager();
await cameraManager.setHorizontalFieldOfView(45);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setHorizontalFieldOfView(45);

Parameters

NameTypeDescription
fovynumber相机张角(>0)

Returns

Promise<boolean>

是否成功


setInertia

setInertia(inertia): Promise<boolean>

Details

设置相机惯性

Examples

js
let cameraManager = await cloud.getCameraManager();
await cameraManager.setInertia(0.7);
let cameraManager = await cloud.getCameraManager();
await cameraManager.setInertia(0.7);

Parameters

NameTypeDescription
inertianumber相机惯性[0,1]

Returns

Promise<boolean>

是否成功