cesium 移动点 获取移动前 移动后的坐标

const handle_MOUSE_MOVE_CLICK = () => {
    handlerDisDown = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
    handlerDisDown.setInputAction(function(event) {
        let pickedObject = viewer.scene.pick(event.position);

        if (!pickedObject) {
            return
        }
        viewer.scene.screenSpaceCameraController.enableRotate = false;// 相机锁定

        if (pickedObject.id.point) {
            let cartographic1 = Cesium.Cartographic.fromCartesian(pickedObject.primitive.position);
            let latitude = Cesium.Math.toDegrees(cartographic1.latitude);
            let longitude = Cesium.Math.toDegrees(cartographic1.longitude)
            // 移动前的点
            selectedPoint.value = [+longitude.toFixed(6),+latitude.toFixed(6)]
        }
        

        handlerDisDown.setInputAction((arg) => { // 为viewer绑定MOUSE_MOVE事件监听器(执行函数,监听的事件)

            const position = arg.endPosition;
            const cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(position), viewer.scene); 
            if (pickedObject.id.point) {
                
                //注意需要赋值三维坐标
                selectedEntity.position=cartesian
            // 更新实体位置为当前鼠标位置
                
            }
          

        }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

        handlerDisDown.setInputAction(() => { //为viewer绑定LEFT_UP事件监听器(执行函数,监听的事件)

            if (pickedObject.id.point) {
                let cartesian = selectedEntity.position._value
                let cartographic1 = Cesium.Cartographic.fromCartesian(cartesian);
                let latitude = Cesium.Math.toDegrees(cartographic1.latitude);
                let longitude = Cesium.Math.toDegrees(cartographic1.longitude);


                console.log(longitude ,latitude , )// 移动后的点


            handlerDisDown.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE); // 解除viewer的MOUSE_MOVE事件监听器
            handlerDisDown.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP); // 解除viewer的LEFT_UP事件监听器
            viewer.scene.screenSpaceCameraController.enableRotate = true; // 取消相机锁定
        }, Cesium.ScreenSpaceEventType.LEFT_UP)


        
    }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
}

在 LEFT_DOWN 事件里面获取移动前坐标 
在 MOUSE_MOVE 事件里面移动
在 LEFT_UP 事件里面获取移动后坐标 并移除事件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值