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...