Skip to content

CameraUtil 相机控制工具


演练场

导入

ts
import { CameraUtil } from "@m-tech/gis-core";

方法

  • setViewerMode(mode)

切换二/三维。

入参

参数名称类型默认值描述
mode'2D' | '3D''3D'模式

  • flyTo(target, options)

飞向。

入参

参数名称类型描述
targetCesium.Entity | Overlay | Position要查看的实体、实体数组、实体集合、数据源、Cesium3DTileset、点云、图像层或具体的经纬度。
optionsobject飞行相关参数设置
options.durationnumber以秒为单位的飞行持续时间。
如果省略,会根据飞行的距离来计算一个理想的持续时间。
options.maximumHeightnumber飞行动画中的最高高度设置
options.offsetCesium.HeadingPitchRange航向间距范围
options.offset.headingnumber航向角(以弧度为单位)
options.offset.pitchnumber俯仰角(以弧度为单位)
options.offset.rangenumber距中心的距离,以米为单位
options.offset.distancenumber | string中心点偏移距离,以米为单位,如果传入字符串且以 px 结尾则以像素为单位
options.offset.directionnumber中心点偏移方向(以弧度为单位)

返回

类型描述
Promise.<boolean>如果成功完成了飞行,则为 true;
如果当前未在场景中看到目标,或者取消了飞行,则为 false。

示例用法

ts
// 飞向-Entity
const layer = new EntityLayer().addToViewer(viewer);
const wall = new Wall([
  new Position(114.33186342928641, 30.484746302321202, 0),
  new Position(114.33341220217702, 30.484746302321202, 0),
  new Position(114.33341220217702, 30.488085655535254, 0),
  new Position(114.33186342928641, 30.488085655535254, 0),
  new Position(114.33186342928641, 30.484746302321202, 0),
]).addToLayer(layer);

CameraUtil.flyTo(wall);

// 飞向-Entity(带中心点偏移)
CameraUtil.flyTo(wall, {
  offset: {
    range: 650,
    distance: "100px",
    direction: CesiumMath.toRadians(-90), // 中心点偏左(目标点会在偏右侧)
  },
});

// 飞向-Position
CameraUtil.flyTo(new Position(114.315782, 30.47449, 0), {
  duration: 10,
  maximumHeight: 1000,
  offset: {
    heading: CesiumMath.toRadians(45),
    pitch: CesiumMath.toRadians(-30),
    range: 1000,
  },
});

// 飞向-Position(带中心点偏移)
CameraUtil.flyTo(new Position(114.315782, 30.47449, 0), {
  duration: 10,
  maximumHeight: 1000,
  offset: {
    range: 650,
    distance: "100px",
    direction: CesiumMath.toRadians(-90), // 中心点偏左(目标点会在偏右侧)
  },
});

  • zoomTo(target, offset)

缩放至。

入参

参数名称类型描述
targetCesium.Entity | Overlay | Position要查看的实体、实体数组、实体集合、数据源、Cesium3DTileset、点云、图像层或具体的经纬度。
offsetCesium.HeadingPitchRange航向间距范围
offset.headingnumber航向角(以弧度为单位)
offset.pitchnumber俯仰角(以弧度为单位)
offset.rangenumber距中心的距离,以米为单位

返回

类型描述
Promise.<boolean>如果成功完成了飞行,则为 true;
如果当前未在场景中看到目标,或者取消了飞行,则为 false。

示例用法

ts
// 缩放-Entity
CameraUtil.zoomTo(wall);

// 缩放-Position
CameraUtil.zoomTo(new Position(114.315782, 30.47449, 0), {
  heading: CesiumMath.toRadians(45),
  pitch: CesiumMath.toRadians(-30),
  range: 1000,
});

  • setViewport(target, isFlyTo, params)

设置视角。

入参

参数名称类型描述
targetPosition设置相机至具体的经纬度及航向、俯仰和滚动
isFlyToBoolean是否有飞行动画
paramsObject

示例用法

ts
CameraUtil.setViewport(new Position(114.315782, 30.47449, 0, 45, -30, 0), true);
  • getCameraPosition()

获取当前视图相机位置

返回

类型描述
Position相机位置

示例用法

ts
const position = CameraUtil.getCameraPosition();
console.log(position);
// {
//   longitude: 114.315782,
//   latitude: 30.47449,
//   height: 0,
//   heading: 45,
//   pitch: -30,
//   roll: 0,
// }

MGis 地理三维库