三维模型标注常用方法
模型图层的显示隐藏、删除
// 隐藏图层
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();