点选操作

1. 鼠标事件

Motor.MouseEventType封装了大多数常用鼠标和触摸事件,使用如下

viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
    //mouse={position: Cartesian2}
});

上面代码定义了鼠标左键点击事件,回调函数的传入参数是一个mouse对象,返回当前鼠标点击的屏幕二维坐标(Cartesian2)

viewer.addMouseEventListener(Motor.MouseEventType.MOUSE_MOVE,function(mouse){
    //mouse={endPosition: Cartesian2}
})

上面代码定义了鼠标移动事件,回调函数的传入参数是一个mouse对象,但是mouse中的position变成了endPosition,返回当前鼠标所在的屏幕二维坐标(Cartesian2)

2. 点选显示信息

//设置点选后的显示构件信息
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
  //根据屏幕坐标coords,获取点选的对象
  let obj = viewer.pick(mouse.position,project);
  if(obj instanceof Motor.Component){
    obj.getProperties().then(data=>{
        console.log(data);
    });
  }
});

3. 点选高亮

let currentSelectedComponent = undefined;
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
  //根据屏幕坐标coords,获取点选的对象
  let obj = viewer.pick(mouse.position,project);
  if (obj instanceof Motor.Component) {
    obj.select();
    currentSelectedComponent = obj;
  }
  else{
      if(currentSelectedComponent){
          currentSelectedComponent.deselect();
      }
  }
});

4. 点选获取坐标

viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
  //根据屏幕坐标coords,获取点选处的三维坐标
  let position = viewer.pickPosition(mouse.position);
  console.log(position);
})

5. 双击构件,镜头飞向构件

viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
  //根据屏幕坐标coords,获取点选的对象
  let obj = viewer.pick(mouse.position,project);
  if (obj instanceof Motor.Component) {
    viewer.flyTo(obj);//飞向构件
  }
})