您现在的位置: 首页 > 城市三维场景SDK开发 > 开发指南


三维模型标注(收费功能) 您可以向三维场景中添加各种高精度、有趣又炫酷的三维模型 boardMarker boardMarker

第一步,新建一个三维标注图层(以下代码都要在三维场景加载完成后调用map.on('loadComplete')


map.on('loadComplete',function(){
	//方法1,通过名字区别创建不同的layer
    // 获取室外层对象
    var floorLayer = map.getBuildingById(0).getFloor(1);
	var layer=floorLayer.getOrCreateLayerByName("camera" , esmap.ESLayerType.MODEL3D);
	//方法2,共用一个模型图层layer
	var layer = new esmap.ESLayer(esmap.ESLayerType.MODEL3D);
})

第二步,创建一个三维模型标注实例

 
var marker = new esmap.ES3DMarker({
    x: x,   //x坐标
    y: y,   //y坐标
    id: 2018, //自定义id标识
    name: "myTree", //自定义name
    url: url, //模型的文件地址
    size: 1,  //尺寸
    angle: 0,  //旋转角
    height: 0,  //高度
    showLevel: 16,  //三维场景缩放等级达到多少时隐藏
    spritify: false   //是否跟随三维场景缩放更新大小
});

第三步,添加到楼层对象


layer.addMarker(marker);   //将标注添加到图层上
//方法1不需要以下代码
//针对方法2,将共用的模型图层添加到楼层上
// 获取室外层对象
var floorLayer = map.getBuildingById(0).getFloor(1);
floor.addLayer(layer);     

第四步,启动三维场景模型加载队列


//改方法用于通知三维场景加载3d模型。如果一个图层上有多个3d模型,可以在添加完毕后统一调用一次。
layer.show3D()

模型图层的显示隐藏、删除


//隐藏图层
layer.visible=false;
//楼层上根据名字删除图层
floorLayer.removeLayersByNames("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
})
模型闪烁

marker.flash({
    scale:1.5
    //time:0.6  //闪烁时间,一般省略
})
模型跳跃

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

marker.jump({
    times:3,   //次数
    height:8    //高度
    // time:1,  //跳跃时间,一般省略
    //delay:0    //延迟几秒执行
})
模型渐隐

marker.fadeOut(function(){
    console.log("渐隐回调")
    //obj.delete();  //隐藏之后删除该模型。删除后不可恢复。
})
模型渐显

marker.fadeIn(function(){
    console.log("渐显回调")
});   
模型改变颜色方法一

//单个
map.change3dColor({
 id:0,
 // name:,
 // fnum:[1,2]
 color:"#00ff00"
})
//多个
map.change3dColor({
 id:[1,2,3],
 // name:,
 // fnum:[1,2]
 color:"#00ff00"
})
//若需要还原颜色#000000

模型改变颜色方法二

//改变模型为红色
marker.changeColor('#FF0000')  
//还原颜色
marker.restoreColor();
模型动态设置比例

marker.setScale(5)  //放大五倍
模型播放动画

//使用默认参数来模型动画播放
marker.playAnimation('light-on')    //播放 "light-on"  动画
//设置详细参数来模型动画播放
marker.playAnimation({
    name:'light-on',   //动画名称
    repeat: 1,    //动画执行多少次
    time: 1,     //动画执行时间 /s
    loop: false,   //是否循环执行动画
    callback: function(){    //动画执行完成回调
        console.log('动画执行完成')
    },  
})
//停止模型动画播放
marker.stopAnimation();
模型发光报警

//1.开启发光报警光圈效果
marker.glow({
	color:'#00FF00',  //设置报警光圈颜色
	height:1,   //设置报警光圈高度
	scale:2 //设置报警光圈效果大小
});
//2.停止发光报警光圈效果
marker.stopGlow(); 
沿固定路径移动

var points = [
{
    x: 12683435.841512972,
    y: 2557888.6579067316,
    fnum: 1,
    // offset:0
},
{
    x: 12683433.708513774,
    y: 2557872.0505466303,
    fnum: 1,
    // offset:0
}]                        
marker.movePath({
    //time:10,    //在指定时间完成移动。与speed参数二选一
    speed: 10,     //速度,设置此项则忽略time
    loop: true,    //是否循环执行
    orientToPathDegree:0,  //物体移动沿向路径方向的角度
    path: points,   //路径点集
    offsetHeight: 0,   //移动时的高度
	followPosition:true,//第一人称视角,跟随移动位置
	followScaleLevel:1,//第一人称视角,跟随缩放三维场景大小
	viewTiltAngle:map.maxPolarAngle,//第一人称视角,三维场景俯仰角
	followAngle:true,	//第一人称视角,根据路径来动态变换三维场景角度
	orientToPath:true,  //物体移动时是否沿向路径方向
	angle:0,  	//物体移动沿向路径方向的角度
    complete: function() {
        //动画执行完成回调事件
    },
    onMoving: function(e) {
        //路径移动实时回调
        //获取模型移动中的实时位置
        console.log(e)
    },
});