三维模型标注常用方法

模型图层的显示隐藏、删除
// 隐藏图层
layer.visible = false;
// 楼层上根据名字删除图层
floorLayer.removeLayersByNames(layer.name);
// 楼层上根据类型删除图层
floorLayer.removeLayersByTypes(esmap.ESLayerType.MODEL3D);
从三维场景中移除
marker.delete(); 
模型旋转
marker.rotateTo({
    angle: 30     // 角度,单位(度/°)
    // time: 0.6  // 旋转动画时间
})
// 如果需要在指定方向旋转,可以传入x,y,z任意一个
marker.rotateTo({
    x: 30        // 绕x轴方向旋转30度
})
模型移动到另外一个目标位置
marker.moveTo({
    x: map.center.x + 20,
    y: map.center.y - 40,
    time: 0      // 位移动画时间,单位(秒/s)
    orientToPath: true,    // 是否朝向路径
    onMoving: ()=>{        // 移动过程中的回调
        
    },
    callback: ()=>{        // 移动结束后的回调

    }
})
模型跳跃
// 使用默认参数跳跃
marker.jump();

marker.jump({
    times: 3,     // 次数
    height: 8     // 高度
    // time: 1,   // 跳跃时间,一般省略
    // delay: 0   // 延迟几秒执行
})
模型渐隐
marker.fadeOut({
    time: 1   // 默认渐隐动画时间是1秒
    // marker.delete();  隐藏之后删除该模型,删除后不可恢复。
})
模型渐显
marker.fadeIn({
    time: 1   // 默认渐显动画时间是1秒
})
模型改变颜色方法1
// 单个模型
map.change3dColor({
    id: 0,             // 指定的单个模型id
    // name: 'model',  // 或者指定模型的name
    // fnum: [1,2]     // 楼层范围
    color: '#00ff00'
})
// 多个模型
map.change3dColor({
    id: [1,2,3],       // 指定的多个模型id
    // fnum: [1,2]     // 楼层范围
    color: '#00ff00'
})
// 若需要还原默认颜色把color设为false
模型改变颜色方法2
// 改变模型为红色
marker.changeColor('#FF0000')  
// 还原默认颜色
marker.restoreColor();
模型动态设置比例
marker.setScale(5)  // 放大五倍
其他方法
// 更新模型标注url
marker.setSrc('https://www.esmap.cn')

三维模型标注移动与动画

获取模型动画名称

// 获取模型标注的动画名称
// 获得类型为字符串或者数组,即一个或者多个动画名称
var animationsName = marker.animations  
// 字符串:'light-on',数组:['light-on','walk']

模型播放动画

// 每个模型都有自带的动画,可在marker.animations属性上查看
// 演示使用默认参数来播放模型动画
marker.playAnimation('light-on')    // 播放'light-on'动画
// 设置详细参数来模型动画播放
marker.playAnimation({
    name: 'light-on',         // 动画名称
    loop: false,              // 是否循环执行动画
    callback: function(){     // 动画执行完成回调
        console.log('动画执行完成')
    },  
})
// 停止模型动画播放
marker.stopAnimation();
playAnimation方法的参数说明:
参数 说明 类型 默认值 是否必填
name 动画名称 String ——
repeat 动画播放次数 Number 1
delay 延迟播放时间/s Number 0
time 动画时长/s Number 1
loop 是否循环执行动画(开启时repeat属性无效) Boolean false
clampWhenFinished 是否在播放完成后保持最后一帧 Boolean true
stopLastAction 是否停止上一个动画 Boolean true
callback 动画执行完成的回调 Function ——

沿固定路径移动

var points = [
{
    x: 12683435.841512972,
    y: 2557888.6579067316,
    fnum: 1,
    // offset: 0       // 向上偏移量
},
{
    x: 12683433.708513774,
    y: 2557872.0505466303,
    fnum: 1,
    // offset: 0       // 向上偏移量
}]                        
marker.movePath({
    speed: 10,         // 速度,设置此项则忽略time
    loop: true,        // 是否循环执行
    path: points,      // 路径点集
    offsetHeight: 0,   // 移动时的高度
    complete: function() {
    // 动画执行完成回调事件
    },
    onMoving: function(e) {
    // 路径移动实时回调
    // 获取模型移动中的实时位置
    console.log(e)
    },
});
movePath方法参数说明:
参数 说明 类型 默认值 是否必填
time 指定时间内完成移动 Number —— 与speed参数二选一
speed 移动速度(设置此值忽略time) Number —— 与time参数二选一
path 路径点集 Array ——
loop 是否循环执行 Boolean false
loopReverse 是否反向循环执行 Boolean false
offsetHeight 高度偏移 Number 0
orientToPath 模型移动时是否朝向路径方向 Boolean true
followPosition 是否跟随第一人称视角移动 Boolean false
followAngle 是否根据路径来动态变换三维场景角度 Boolean false
followTilt 是否跟随俯仰角 Boolean false
followSmooth 平滑跟随程度 Number 0
viewTiltAngle 第一人称视角的三维场景俯仰角 Number 0
angle 模型移动朝向路径方向的角度 Number 0
maxViewDistance 最大可视距离 Number 0
minViewDistance 最小可视距离 Number 0
complete 动画执行完成回调事件 Function ——
onMoving 路径移动实时回调 Function ——

其他方法

// 暂停移动
marker.pauseMovePath();

// 继续移动
marker.resumeMovePath();