cesium 设置鼠标事件 - 屏幕坐标到图上坐标 screenPointToMap.js


function activate_streetViewMode() {
    /*功能:激活“街景模式”。*/
    let wheelingPosition = {};
    // 给$(".cesium-viewer")元素添加 mousemove 事件。
    $(".cesium-viewer").on("mousemove", function (event) {
        /*功能:获取鼠标的实时位置。*/
        wheelingPosition.x = event.clientX;
        wheelingPosition.y = event.clientY;
        // console.log("wheelingPosition:", wheelingPosition);
        // wheelingPosition: {x: 139, y: 312}
    });

    function changeViewerHeightDynamic() {
        /*功能:由于视图中的视高,实时性较差,在此功能中,稍加改善。*/
        // let viewHeight = $("#location_mars_jwd").children("div:first")[0];
        console.log("viewer.camera.positionCartographic.height:", viewer.camera.positionCartographic.height);
        let html = '视高:' + viewer.camera.positionCartographic.height.toFixed(1) + '米';
        let viewHeight = $("#location_mars_jwd").children("div:first").html(html);
        // console.log("viewHeight:", viewHeight[0]);
    }

    handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
    handler.setInputAction(function (e) {
            /*功能:当三维视图的高度小于某个高度时,激活“街景模式”。*/
            setTimeout(changeViewerHeightDynamic, 100);
            if (viewer.camera.positionCartographic.height < displayBaiduMapPanoramaHeight) {
                // 获取鼠标位置(笛卡尔坐标系,即,地球直角坐标系)。
                let Cartesian3_CurrentMousePosition = mars3d.point.getCurrentMousePosition(viewer.scene, wheelingPosition);
                // console.log("Cartesian3_CurrentMousePosition:", Cartesian3_CurrentMousePosition);
                // Cartesian3_CurrentMousePosition: a {x: -2308816.906348081, y: 4393127.8631515205, z: 3992865.6356029827}
                if (Cartesian3_CurrentMousePosition) {
                    // 转换成弧度 + 高度。
                    let Cartographic_CurrentMousePosition = Cesium.Cartographic.fromCartesian(Cartesian3_CurrentMousePosition);
                    // 转换成经纬度。
                    let longitude = Number(Cesium.Math.toDegrees(Cartographic_CurrentMousePosition.longitude).toFixed(6));
                    let latitude = Number(Cesium.Math.toDegrees(Cartographic_CurrentMousePosition.latitude).toFixed(6));

                    let e = setInterval(function () {
                            /*功能:等待 BMap 成为window的属性,清除定时器,添加街景视图。*/
                            null != window.BMap && (clearInterval(e), addSecondMap({x: longitude, y: latitude}))
                        }, 50
                    );
                }
            }
        }, Cesium.ScreenSpaceEventType.WHEEL
    );
}


// 移除视图的 mousemove 事件。
$(".cesium-viewer").off("mousemove");
handler && (handler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL), handler.destroy(), handler = null);






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值