cesium2s / CameraPathRoaming
类: CameraPathRoaming
Description
基于Cesium实现的相机路径漫游工具类 支持检查点管理、路径插值生成、自动漫游、进度控制等功能,可可视化展示路径和检查点
示例
// 1. 初始化相机路径漫游实例
const cameraRoaming = new CameraPathRoaming(viewer, {
modelUrl: "/models/camera-marker.glb" // 可选:检查点模型地址
});
// 2. 添加检查点(从当前相机姿态添加)
cameraRoaming.addCheckPoint(viewer.camera);
// 3. 生成路径并开始漫游
cameraRoaming.start();
// 4. 监听漫游进度
cameraRoaming.onPlay = (percent) => {
console.log(`漫游进度:${(percent * 100).toFixed(1)}%`);
};构造函数
构造函数
new CameraPathRoaming(
viewer,options?):CameraPathRoaming
构造函数 - 初始化相机路径漫游实例
参数
viewer
Viewer
Cesium Viewer实例
options?
Option
初始化配置(可选)
返回
CameraPathRoaming
属性
cameraPath
cameraPath:
CameraOption[] =[]
插值生成的相机路径数组(包含连续的相机姿态节点)
默认值
[]checkPointEntities
checkPointEntities:
Entity[] =[]
检查点可视化实体数组(用于在场景中显示每个检查点)
默认值
[]checkPoints
checkPoints:
ObservableArray<CameraOption>
检查点列表(可观察数组,变化时自动触发路径更新)
默认值
[]cursor
cursor:
number=0
漫游进度游标(当前漫游到的路径节点索引)
默认值
0isPaused
isPaused:
boolean=false
isRoaming
isRoaming:
boolean=false
是否正在漫游的状态标记
默认值
falseoptions?
optionaloptions:Option
初始化配置选项
pathEntity
pathEntity:
Entity|undefined
路径可视化实体(用于在场景中显示漫游路径)
默认值
undefinedspeed
speed:
number=1.0
viewer
viewer:
Viewer
Cesium Viewer实例,用于操作三维场景和相机
方法
addCheckPoint()
addCheckPoint(
camera):void
参数
camera
Camera
Cesium相机实例(通常使用viewer.camera)
返回
void
Description
从当前相机姿态添加检查点
示例
// 从当前视图添加检查点
cameraRoaming.addCheckPoint(viewer.camera);end()
end():
void
返回
void
Description
结束相机路径漫游 恢复路径和检查点可视化,重置进度游标和漫游状态
示例
// 手动结束漫游
cameraRoaming.end();getPath()
getPath():
CameraOption[]
返回
CameraOption[]
检查点数组
Description
获取当前检查点列表(原始控制点,非插值路径)
示例
const checkPoints = cameraRoaming.getPath();
console.log("当前检查点数量:", checkPoints.length);jumpTo()
jumpTo(
percentage):void
参数
percentage
number
目标进度(0~1之间的小数,0为起点,1为终点)
返回
void
Description
按百分比跳转漫游进度
示例
// 跳转到50%进度
cameraRoaming.jumpTo(0.5);onPlay()
onPlay(
percent):void
参数
percent
number
漫游进度(0~1之间的小数)
返回
void
Description
漫游进度监听回调(可重写) 每次相机姿态更新时触发,返回当前漫游进度百分比
示例
// 重写进度监听,更新UI进度条
cameraRoaming.onPlay = (percent) => {
document.getElementById("progress-bar").value = percent * 100;
};pause()
pause():
void
暂停漫游
返回
void
readPath()
readPath(
data):void
参数
data
CameraOption[]
外部相机路径数据(检查点数组)
返回
void
Description
导入外部相机路径(覆盖当前检查点列表)
示例
// 导入预设的路径数据
const presetPath = [
{ position: new Cesium.Cartesian3(...), orientation: new Cesium.Quaternion(...) },
{ position: new Cesium.Cartesian3(...), orientation: new Cesium.Quaternion(...) }
];
cameraRoaming.readPath(presetPath);removeCheckPoints()
removeCheckPoints():
void
返回
void
Description
清空所有检查点,同时移除路径和检查点的可视化实体
示例
cameraRoaming.removeCheckPoints();resume()
resume():
void
继续漫游
返回
void
setSpeed()
setSpeed(
speed):void
[NEW] 设置播放速率
参数
speed
number
速率倍数 (建议范围 0.1 - 5.0)
返回
void
start()
start():
void
返回
void
Description
开始相机路径漫游
Warning
若当前已在漫游中或插值路径为空,会打印错误日志且不执行操作
示例
// 生成路径后开始漫游
if (cameraRoaming.cameraPath.length > 0) {
cameraRoaming.start();
}