【Cesium】鼠标点击底图拾取坐标、图层

 当我们遇到需要点击三维底图拾取图层做相关处理的需求时,需要怎么实现呢?

 

Cesium常用的鼠标事件包括左击、右击,左键双击等,分别对应Cesium.ScreenSpaceEventType.LEFT_CLICK、Cesium.ScreenSpaceEventType.RIGHT_CLICK、Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK。

其他诸如鼠标中键点击、左键按下/弹起等,若有需要可自行百度查询。用法如下:

let handler1 = new Cesium.ScreenSpaceEventHandler(_viewer.scene.canvas);
handler1.setInputAction(async function(event) {}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

当进入页面,添加鼠标的点击事件监听,以鼠标左击为例。该事件返回鼠标在屏幕点击的位置,再调用 pickPosition 方法即可转为笛卡尔坐标,通过笛卡尔坐标可以转换成经纬度坐标。

		const that = this
        const _viewer = window.viewer
        let handler1 = new Cesium.ScreenSpaceEventHandler(_viewer.scene.canvas);
        handler1.setInputAction(async function(event) {
            // 1. 拾取经纬度坐标
           	let cartesian
         	if(viewer.scene.pickPosition(event.position)){
            	cartesian = viewer.scene.pickPosition(event.position);
          	}else{
            	cartesian = viewer.camera.pickEllipsoid(event.position)
          	}
            let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
            let lng = Cesium.Math.toDegrees(cartographic.longitude); // 经度
            let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度
            // 2. 拾取图层
            let pickRay = viewer.camera.getPickRay(event.position);
            let pickLayer = viewer.imageryLayers.pickImageryLayers(pickRay, viewer.scene)
           
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

以上就是鼠标左击拾取坐标、图层的实现方法^-^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值