cesium事件

cesium事件


获取位置信息

let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);

// 点击获取坐标
handler.setInputAction(function(event){
	let ray = viewer.camera.getPickRay(event.position);
	let cartesian = viewer.scene.globe.pick(ray, viewer.scene);
	let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
	let lng = Cesium.Math.toDegrees(cartographic.longitude); // 经度
    let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度
    let alt = cartographic.height; // 高度
    let coordinate = {
       longitude: Number(lng.toFixed(6)),
       latitude: Number(lat.toFixed(6)),
       altitude: Number(alt.toFixed(2))
    };
    console.log(coordinate);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);


// 鼠标移动获取坐标
handler.setInputAction(function(movement){
	//捕获椭球体,将笛卡尔二维平面坐标转为椭球体的笛卡尔三维坐标,返回球体表面的点
    var ellipsoid = viewer.scene.globe.ellipsoid;
    var cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
    if(cartesian){
      	//将笛卡尔三维坐标转为地图坐标(弧度)
       	var cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);
      	//将地图坐标(弧度)转为十进制的度数
      	var lat = Cesium.Math.toDegrees(cartographic.latitude).toFixed(4);
      	var lng = Cesium.Math.toDegrees(cartographic.longitude).toFixed(4);
      	var height = (viewer.camera.positionCartographic.height/1000).toFixed(2);
		position.value = lng+", "+lat+", "+height;
     }
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE)

点击获取事件对象及模型信息

let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (movement) {
	var pick = viewer.scene.pick(movement.position);
    var dpick = viewer.scene.drillPick(movement.position, 1000, 1000)
    console.log("cesium点击", movement, pick, dpick);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

移除鼠标事件

方法一:

handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)//移除事件

方法二:

viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);

常用事件类型

Cesium.ScreenSpaceEventType.LEFT_CLICK //鼠标左击事件
Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK //鼠标左键双击事件
Cesium.ScreenSpaceEventType.LEFT_DOWN //左键鼠标按下事件
Cesium.ScreenSpaceEventType.LEFT_UP //左键鼠标抬起事件
Cesium.ScreenSpaceEventType.MIDDLE_CLICK //中键单机
Cesium.ScreenSpaceEventType.MIDDLE_DOWN //中键按下
Cesium.ScreenSpaceEventType.MIDDLE_UP //中键抬起
Cesium.ScreenSpaceEventType.MOUSE_MOVE //鼠标移动
Cesium.ScreenSpaceEventType.PINCH_END //表示两指事件在触摸面上的结束。
Cesium.ScreenSpaceEventType.PINCH_MOVE //两指移动
Cesium.ScreenSpaceEventType.PINCH_START //表示在触摸面上发生两指事件的开始。
Cesium.ScreenSpaceEventType.RIGHT_CLICK //鼠标右击事件
Cesium.ScreenSpaceEventType.RIGHT_DOWN  //鼠标右键按下
Cesium.ScreenSpaceEventType.RIGHT_UP    //鼠标右键抬起
Cesium.ScreenSpaceEventType.WHEEL //鼠标滚轮事件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Raccom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值