cesium 获取 bbox、获取四至、获取边界、获取左上角经纬度、获取 extend、获取界面四边的经纬度

 

 

 

复制代码
const getViewExtend = () => {
    let params = {}
    let extend = viewer.camera.computeViewRectangle()
    if (typeof extend === 'undefined') {
        //2D下会可能拾取不到坐标,extend返回undefined,因此作如下转换
        let canvas = viewer.scene.canvas
        let upperLeft = new Cesium.Cartesian2(0, 0) //canvas左上角坐标转2d坐标
        let lowerRight = new Cesium.Cartesian2(canvas.clientWidth, canvas.clientHeight) //canvas右下角坐标转2d坐标

        let ellipsoid = viewer.scene.globe.ellipsoid
        let upperLeft3 = viewer.camera.pickEllipsoid(upperLeft, ellipsoid) //2D转3D世界坐标

        let lowerRight3 = viewer.camera.pickEllipsoid(lowerRight, ellipsoid) //2D转3D世界坐标

        let upperLeftCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(upperLeft3) //3D世界坐标转弧度
        let lowerRightCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(lowerRight3) //3D世界坐标转弧度

        let minx = Cesium.Math.toDegrees(upperLeftCartographic.longitude) //弧度转经纬度
        let maxx = Cesium.Math.toDegrees(lowerRightCartographic.longitude) //弧度转经纬度

        let miny = Cesium.Math.toDegrees(lowerRightCartographic.latitude) //弧度转经纬度
        let maxy = Cesium.Math.toDegrees(upperLeftCartographic.latitude) //弧度转经纬度

        console.log('经度:' + minx + '----' + maxx)
        console.log('纬度:' + miny + '----' + maxy)

        params.minx = minx
        params.maxx = maxx
        params.miny = miny
        params.maxy = maxy
    } else {
        //3D获取方式
        params.maxx = Cesium.Math.toDegrees(extend.east)
        params.maxy = Cesium.Math.toDegrees(extend.north)

        params.minx = Cesium.Math.toDegrees(extend.west)
        params.miny = Cesium.Math.toDegrees(extend.south)
    }

    // 返回屏幕所在经纬度范围
    return params
}

// 获取四至坐标
const { minx, miny, maxx, maxy } = getViewExtend()

// bbox 
const bbox = [minx, miny, maxx, maxy].join(',')

console.log(bbox)
复制代码

 

posted @   贝尔塔猫  阅读(2491)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2017-03-14 CSS 温故而知新 background常用属性
2017-03-14 CSS3 稳固而知新: 居中
2017-03-14 typeof 和 Object.prototype.toString.call 数据类型判断的区别
2017-03-14 eslint 人性化配置
点击右上角即可分享
微信分享提示