cesium鼠标点击事件,监听有时无效解决方案

2023-06-07  本文已影响0人  可乐_加冰_
 handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
        //鼠标左键
        handler.setInputAction(function (movement) {

          let earthPosition = viewer.scene.globe.pick(viewer.camera.getPickRay(movement.position), viewer.scene);//todo 下方的有时无法获取,用此方案
          // let ellipsoid = viewer.scene.globe.ellipsoid;
          // let cartographic = ellipsoid.cartesianToCartographic(earthPosition);
          // let lat = Cesium.Math.toDegrees(cartographic.latitude);
          // let lon = Cesium.Math.toDegrees(cartographic.longitude);

          // let earthPosition = viewer.scene.pickPosition(movement.position);//todo 注意这个有时候获取不到
         
          console.log('earthPosition--->',earthPosition)
          if (Cesium.defined(earthPosition)){

            let cartographic = Cesium.Cartographic.fromCartesian(earthPosition);
            // 经纬度
            let lon = Cesium.Math.toDegrees(cartographic.longitude).toFixed(8);
            let lat = Cesium.Math.toDegrees(cartographic.latitude).toFixed(8);
            pointsArr.push({longitude:Number(lon),latitude:Number(lat)})
            //模型高度
            let height = cartographic.height;
            if (Number(height) < 0) {
              let ray = viewer.camera.getPickRay(movement.position);
              earthPosition = viewer.scene.globe.pick(ray, viewer.scene);
            }
           
          }


        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
上一篇 下一篇

猜你喜欢

热点阅读