获取当前视图区域范围

1.获取当前视图区域范围

// 获取当前camera视野区域

let rectangle = window.viewer.scene.camera.computeViewRectangle();

2.获取当前视图区域范围

getCurrentExtent() {

// 范围对象

var extent = {};

// 得到当前三维场景

var scene = window.viewer.scene;

// 得到当前三维场景的椭球体

var ellipsoid = scene.globe.ellipsoid;

var canvas = scene.canvas;

// canvas左上角

var car3_lt = window.viewer.camera.pickEllipsoid(new NF.Cartesian2(0,0), ellipsoid);

// canvas右下角

var car3_rb = window.viewer.camera.pickEllipsoid(new NF.Cartesian2(canvas.width,canvas.height), ellipsoid);

// 当canvas左上角和右下角全部在椭球体上

if (car3_lt && car3_rb) {

var carto_lt = ellipsoid.cartesianToCartographic(car3_lt);

var carto_rb = ellipsoid.cartesianToCartographic(car3_rb);

extent.xmin = NF.Math.toDegrees(carto_lt.longitude);

extent.ymax = NF.Math.toDegrees(carto_lt.latitude);

extent.xmax = NF.Math.toDegrees(carto_rb.longitude);

extent.ymin = NF.Math.toDegrees(carto_rb.latitude);

}

// 当canvas左上角不在但右下角在椭球体上

else if (!car3_lt && car3_rb) {

var car3_lt2 = null;

var yIndex = 0;

do {

// 这里每次10像素递加,一是10像素相差不大,二是为了提高程序运行效率

yIndex <= canvas.height ? yIndex += 10 : canvas.height;

car3_lt2 = window.viewer.camera.pickEllipsoid(new NF.Cartesian2(0,yIndex), ellipsoid);

}while (!car3_lt2);

var carto_lt2 = ellipsoid.cartesianToCartographic(car3_lt2);

var carto_rb2 = ellipsoid.cartesianToCartographic(car3_rb);

extent.xmin = NF.Math.toDegrees(carto_lt2.longitude);

extent.ymax = NF.Math.toDegrees(carto_lt2.latitude);

extent.xmax = NF.Math.toDegrees(carto_rb2.longitude);

extent.ymin = NF.Math.toDegrees(carto_rb2.latitude);

}

// 获取高度

extent.height = Math.ceil(window.viewer.camera.positionCartographic.height);

return extent;

},

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值