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)