1. 相机复位
viewer.flyTo(project);
2. 代码控制相机旋转
//开启相机运动
viewer.controller.setMotion(key);//key为CameraMotionInputs或者String,可以是: rotateLeft, rotateRight, rotateUp,rotateDown
//移除相机运动
viewer.controller.removeMotion(key);
3. 关闭鼠标操作视角
//关闭鼠标操作
viewer.controller.enableInputs = false;
4. 框选放大
开启框选
//开启框选放大功能
viewer.enableMarquee = true;
//开始一次框选放大
viewer.marqueeEditor.startMarquee();
触发startMarquee()
之后,使用鼠标画出框选范围;下一次框选需要再次调用startMarquee
框选放大鼠标事件捕获
//鼠标开始框选
viewer.marqueeEditor.marqueeStart.addEventListener(function(){
console.log('marquee start');
});
//鼠标结束框选
viewer.marqueeEditor.marqueeStop.addEventListener(function(){
console.log('marquee stop');
});
5. 使用第一人称漫游
//开启第一人称漫游
viewer.navigationMode = Motor.NavigationMode.NAV_FREE_KEY;
//修改漫游速度
viewer.roamEditor.movementSpeed = 10;
//开启/关闭重力
viewer.roamEditor.isGravitative = false;
//开启/关闭碰撞检测
viewer.roamEditor.isCollision = false;
6. 镜头锁定构件
下面的代码实现了双击构件时,让镜头锁定构件
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_DOUBLE_CLICK,function(mouse){
//根据屏幕坐标coords,获取点选的对象
let obj = viewer.pick(mouse.position,project);
if (obj instanceof Motor.Component) {
//镜头飞向构件
viewer.flyTo(obj);
}
});
7. 镜头飞向目标
相机位置移动到目标位置(position
),以下代码将相机位移到上海陆家嘴上空,俯视陆家嘴
viewer.currentView = {
position: new Motor.Cartesian3(-2852522.696043213, 4656705.0549966, 3288343.7270516744),
heading:14.252768365538435,
pitch: -50.06079591133133,
roll: 0.06555448028932681
}
相机观察中心移动到目标位置(center
),以下代码将观察中心移动到北京天安门位置,观察距离200米
viewer.currentView = {
center: Motor.Cartesian3.fromDegrees(116.39122,39.90706, 0),
heading:14.252768365538435,
pitch: -50.06079591133133,
range: 200
}