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)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM