视角控制

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
}