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