viewer.scene.postRender.addEventListener(function() {
var cameraPosition = viewer.camera.positionCartographic;
var height = cameraPosition.height;
console.log("当前相机高度: " + height.toFixed(2) + " meters");
// 获取相机覆盖的地理区域
var corners = getCorners(viewer.camera);
console.log("相机可视范围---视锥体-->", corners);
});
function getCorners(camera) {
var ellipsoid = viewer.scene.globe.ellipsoid;
var canvas = viewer.canvas;
var width = canvas.clientWidth;
var height = canvas.clientHeight;
var bottomLeft = camera.getPickRay(new Cesium.Cartesian2(0, height));
var bottomRight = camera.getPickRay(new Cesium.Cartesian2(width, height));
var topLeft = camera.getPickRay(new Cesium.Cartesian2(0, 0));
var topRight = camera.getPickRay(new Cesium.Cartesian2(width, 0));
var bottomLeftCartographic = ellipsoid.cartesianToCartographic(bottomLeft.origin);
var bottomRightCartographic = ellipsoid.cartesianToCartographic(bottomRight.origin);
var topLeftCartographic = ellipsoid.cartesianToCartographic(topLeft.origin);
var topRightCartographic = ellipsoid.cartesianToCartographic(topRight.origin);
return {
bottomLeft: {
longitude: Cesium.Math.toDegrees(bottomLeftCartographic.longitude),
latitude: Cesium.Math.toDegrees(bottomLeftCartographic.latitude)
},
bottomRight: {
longitude: Cesium.Math.toDegrees(bottomRightCartographic.longitude),
latitude: Cesium.Math.toDegrees(bottomRightCartographic.latitude)
},
topLeft: {
longitude: Cesium.Math.toDegrees(topLeftCartographic.longitude),
latitude: Cesium.Math.toDegrees(topLeftCartographic.latitude)
},
topRight: {
longitude: Cesium.Math.toDegrees(topRightCartographic.longitude),
latitude: Cesium.Math.toDegrees(topRightCartographic.latitude)
}
};
}
cesium获取屏幕范围,可视范围
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 首先,基本了解一下各个属性代表的含义, var viewer = new Cesium.Viewer( 'cesi...
- 功能:屏幕取词,从点击屏幕的位置获取范围内的单个单词实现:使用UITextView捕获单词 OC 第一步:关闭te...