跳至主要內容

控件

大约 3 分钟

控件

UI控件

Popup是一个HTML内容提示控件,常用于点击提示或内容呈现。

// 点击对象,并提示对象的名称
var popup = null;
viewer.on("click", (e) => {
    const {object, position} = e;
    if(popup) {
        popup.remove();
    }
    if(position && object) {
        const content = object.name;
        popup = new VT.Popup({
            position: position,
            html: content,
        }).addTo(viewer).show();
    }
})

指北针控件

指北针控件 CompassControl 是一个UI用于方向显示的控件,添加后默认位置在左下角,此控件可跟随相机角度变化。

// 初始化控件
const compassControl = new VT.CompassControl({
    // 起始角度
    startDegree: 30,
});

// 添加控件
viewer.addControl(compassControl);

漫游控件

漫游控件 RomaControl 实现第一人称自由漫游、线路漫游、路线巡检模式。

创建漫游控件方式:

const option = {
    // 相机X轴偏移
    offsetX: 0,
    // 相机Y轴偏移
    offsetY: 1.7,
    // 相机Z轴偏移
    offsetZ: 0,

    // 线路漫游配置参数
    // 速度,公里/第小时
    speed: 40, 
    // 是否显示路径
    showPath: false,
    // 线路点位
    points: [],

    // 模型
    model: null,

    // 第一人称漫游参数
    // 移动单位 0.25米
    moveStep: 0.25,

    // 巡检漫游配置参数,线路漫游配置需生效
    inspectionMode: false,
    // 相等距离条件判断,在离目标点位相隔此距离时暂停
    equalDistance: 1.0,
    // 暂停时间
    inspectionPauseTime: 2000, // 巡检停止时间,毫秒

    // 线路漫游模式下的音频播放
    audio: "",
    // 是否自动播放音频
    playAudio: true,
}

const romaControl = new VT.RomaControl(viewer, option);

自由漫游模式

自由漫游式模拟了人正常行走的状态,在三维场景中选取一个位置后,相机将根据键盘的控制进行移动。

// 创建漫游
const romaControl = new VT.RomaControl(viewer);

// 调用pickStartPoint方法,在场景中选取点位后开始自由漫游
romaControl.pickStartPoint();

线路漫游模式

给定一组线路坐标,相机沿线路移动。

// 给定一组点位
const points = [[0, 0, 0], [1, 0, 0], [3, 0, 2], ...];

// 创建漫游控件
const romaControl = new VT.RomaControl(viewer, {
    points: points,
});

// 开始播放
romaControl.play();

线路巡检模式

巡检模式是在线路漫游基础上增加暂停事件,常用于巡检功能。

// 给定一组点位坐标
const points = [[0, 0, 0], [1, 0, 0], [3, 0, 2], ...];

// 创建一个漫游控件
const romaControl = new VT.RomaControl(viewer, {
    points: points,
    inspectionMode: true,
    inspectionPauseTime: 5000, // 暂时5秒
});

// 监听巡检暂停事件
romaControl.addEventListener("inspection.pause", ({index, point}) => {
    // index 第几个点位
    // point 点位位置
    // 巡检暂停,业务逻辑开始代码片断位置
});

// 调用开始播放
romaControl.play();

退出漫游

// 停止漫游
romaControl.stop();

// 退出第一人称
viewer.setFirstPersonMode(false);

测量控件

测量控件提供连续距离测量、连续距离测量(不分段)、两点距离测量、三角测量、直角测量、高度测量、角度测量、面积测量共8种模式。

测量类型模式与说明
MultipleDistanceMeasuremode:segment,连续测距(分段)
MultipleDistanceMeasuremode:total,连续测距(不分段)
SimpleDistanceMeasure两点测距
RectilinearDistanceMeasure两点直角测距
DistanceMeasure标准距离测距
AreaMeasure面积测量
HeightMeasure高度测量
AngleMeasure角度测量

Viewer对象初始化后自动创建了MeasureControl,使用方式如下:

viewer.measureControl.activate(type, {mode: mode});

// 连续测距(不分段)
viewer.measureControl.activate("MultipleDistanceMeasure", {mode: "total"});

// 标准距离测距
viewer.measureControl.activate("DistanceMeasure");

小地图控件

小地图控件 MiniMapControl 是一个UI控件,可在三维场景中显示一个小地图,并跟随相机移动。

// 添加小地图控件
const minimapControl = new VT.MinimapControl({
    width: 256,
    backgroundColor: "rgba(0,0,0,.5)",
});
viewer.addControl(minimapControl, "bottom-left");

// 移除小地图控件
viewer.removeControl(minimapControl);
上次编辑于:
贡献者: dashun