cesium获取可视区域坐标
时间: 2025-05-19 22:09:14 浏览: 25
在 Cesium 中,获取当前相机视图下的可见区域坐标通常涉及以下几个步骤:
1. **确定当前摄像机的位置和方向**:通过 `viewer.camera` 获取当前摄像机的状态信息,包括位置、方向等。
2. **计算边界范围 (Bounding Box)**:可以利用几何投影技术将三维地球表面上的点映射到二维屏幕上,并反向推导出屏幕四角对应的地理坐标。
3. **提取经纬度范围**:对于每个屏幕角落(如左上、右下),我们可以将其转换成世界坐标系中的点并最终得到其对应的纬度经度值。
下面是具体的示例代码片段展示如何操作:
```javascript
function getVisibleRectangle(viewer) {
const ellipsoid = viewer.scene.globe.ellipsoid;
// 获得四个顶点相对于canvas的比例位置 [x,y]
let cornersScreenSpace = [
new Cesium.Cartesian2(0, 0), // 左上角
new Cesium.Cartesian2(window.innerWidth - 1, window.innerHeight - 1) // 右下角
];
return Promise.all(cornersScreenSpace.map(corner =>
viewer.scene.pickPositionProjectionPromise(corner)
.then(worldPos => worldPos && ellipsoid.cartesianToCartographic(worldPos))
)).then(cartographics => cartographics.filter(Boolean)).then(results => ({
west : Math.min(...results.map(coordinate => coordinate.longitude)),
south : Math.min(...results.map(coordinate => coordinate.latitude )),
east : Math.max(...results.map(coordinate => coordinate.longitude)),
north : Math.max(...results.map(coordinate => coordinate.latitude ))
}));
}
```
该函数返回一个包含南北东西界限的对象形式表示所见矩形区域。
阅读全文
相关推荐


















