三维场景常用方法
常用三维场景操作集合
移动三维场景,旋转,倾斜角代码
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)))
}