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


三维场景常用方法 常用三维场景操作集合

移动三维场景,旋转,倾斜角代码

 

map.moveTo({
    x: map.center.x+10,             //目标点x在中心点坐标基础上再加10米
    y: map.center.y+10              //目标点y在中心点坐标基础上再加10米
    //FloorNum: 3,      //可选,设置聚焦到某一层
    //callback: func,   //可选完成后执行回调
    //time: 3,          //可选三维场景视角移动过去的时间
})

//三维场景加载完成之后更新参数
map.on('loadComplete', function () {
 map.setBackgroundImage('./image/bg.jpg');  //修改背景图片
 map.setBackgroundImage(null); //取消三维场景背景图片(三维场景有背景图片时,三维场景背景色将会失效。)
 map.setBackgroundColor('#FF0000');   //修改背景颜色    

 map.rotateAngle = 60;    //设置三维场景的旋转角度
 map.tiltAngle = 20;      //设置三维场景的倾斜角(最大72°)
 map.scaleLevelTo(10);   //缩放到第10等级,共24等级
 
 var scalelevel=map.scaleLevel_;//获取当前三维场景缩放等级
 map.focusFloorNum = fnum;//切换聚焦楼层方法1,如果是多楼层同时显示了,其它楼层不隐藏  
 map.changeFocusFloor(fnum);//切换聚焦楼层方法2,如果是多楼层同时显示了,其它楼层隐藏不显示  
 map.visibleFloorNums=[fnum1,fnum2]; //切换可见楼层        
});

改变房子颜色(一定要在三维场景加载完成事件之后才有效)

 

//改变方块房子颜色,id,name二选择一,都可以是数组, fnum可选择,参数color:'#FF0000'
map.changeModelColor({id:[1,2],name:'abc',fnum:[1],color:'#FF0000'}) 
   
//改3d模型颜色,id,name二选择一,都可以是数组, fnum可选择,参数color:'#FF0000'
map.change3dColor({id:[1,2],name:['abc','abc'],fnum:[1],color:'#FF0000'})
   
//若需要还原颜色则将color:0

根据id寻找房间,并返回房间信息,更多搜索方法查看

 

//根据id寻找房间,并返回房间信息
var roomdata=map.findRoomById(params)
//参数方法1:params可以是房间id
var params = 1
//参数方法2:或者是一个对象,格式如下:
var params = {
 id:1,   //必选
 fnum:1   //可选
 isSelect:true  //是否高亮房间
}

//取消三维场景所有房间选中状态
map.selectNull();
//取消三维场景所有模型选中状态
map.selectModelNull();

marker动画

 

 //1.选中后不停的蹦
 mark.jump({
     times: 100,     //蹦100次
     duration: 1,	//间隔1秒
     delay: 0.5,	    //0.5秒后执行
     height: 10	    //蹦的三维场景高度
 });
 //2.停止选中后的蹦
 mark.stopJump();
 //3.让选中的闪一下
 mark.flash();    
 //4.更换选中后的图片
 mark.url=新图片url;    
    

三维场景手势操作

 

//控制不能缩放三维场景/禁止缩放三维场景
map.gestureController.enableMapZoom  =  false;
//设置不能旋转/禁止旋转三维场景
map.gestureController.enableMapRotate = false;
//设置不能移动/禁止移动三维场景
map.gestureController.enableMapPan=false;
//开启上下滑动切换楼层的方法,但会取消了左右平移事件,可以监听楼层切换的事件来进行后续操作
map.gestureController.enableFloorChange = true;
map.on('focusFloorNumChanged', function (e) {
	//监听楼层切换的事件来进行后续操作
    });   

按名字查询房间,更多搜索方法查看

 

var results = esmap.ESMapUtil.searchModel({
  key:"name", 
  data:["办公室"]
})

按ID查询房间,更多搜索方法查看

 

var results = esmap.ESMapUtil.searchModel({
  key:"ID",    
  data:[12345]
})

三维场景墨卡托坐标转经纬度坐标

 

function Mercator2lonLat(mercatorX,mercatorY){
 var xy = [];
 var x = mercatorX / 20037508.342789 * 180;
 var y = mercatorY / 20037508.342789 * 180;
 y = 180 / Math.PI * (2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);
 xy.push(x);
 xy.push(y);
 return xy;
}

经纬度坐标转三维场景墨卡托坐标

 

 function lonLat2Mercator(lon,lat) {
   var xy = [];
   var x = lon * 20037508.342789 / 180;
   var y = Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);
   y = y * 20037508.342789 / 180;
   xy.push(x);
   xy.push(y);
   return xy;
}

计算两点距离

 

function getDistance(p1, p2) {
    if (p1 == undefined || p2 == undefined) return;
    return Math.abs(Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2)))
  }