实时获取三维地图相机角度,改变三维观赏角度
html 界面加个按钮,点击事件,和下面方法关联起来就可以了。
/** * 获取当前场景的相机视角参数 * 20190929 niuliting */ function getCurrentExtent() { // 范围对象 var extent = {}; // 得到当前三维场景 var scene = viewer.scene; // 得到当前三维场景的椭球体 var ellipsoid = scene.globe.ellipsoid; var canvas = scene.canvas; // canvas左上角 var car3_lt = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(0, 0), ellipsoid); // canvas右下角 var car3_rb = viewer.camera.pickEllipsoid(new Cesium.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 = Cesium.Math.toDegrees(carto_lt.longitude); extent.ymax = Cesium.Math.toDegrees(carto_lt.latitude); extent.xmax = Cesium.Math.toDegrees(carto_rb.longitude); extent.ymin = Cesium.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 = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(0, yIndex), ellipsoid); } while (!car3_lt2); var carto_lt2 = ellipsoid.cartesianToCartographic(car3_lt2); var carto_rb2 = ellipsoid.cartesianToCartographic(car3_rb); extent.xmax = Cesium.Math.toDegrees(carto_lt2.longitude); extent.ymax = Cesium.Math.toDegrees(carto_lt2.latitude); extent.xmin = Cesium.Math.toDegrees(carto_rb2.longitude); extent.ymin = Cesium.Math.toDegrees(carto_rb2.latitude); } // 获取高度 extent.height = Math.ceil(viewer.camera.positionCartographic.height); extent.lon = Cesium.Math .toDegrees(viewer.camera.positionCartographic.longitude); extent.lat = Cesium.Math .toDegrees(viewer.camera.positionCartographic.latitude); extent.heading = Cesium.Math.toDegrees(viewer.camera.heading); extent.pitch = Cesium.Math.toDegrees(viewer.camera.pitch); extent.roll = Cesium.Math.toDegrees(viewer.camera.roll); //console.log("lon:"+extent.lon+"--lat:"+extent.lat+"--height:"+extent.height+"--heading:" + extent.heading + "--pitch:" + extent.pitch //+ "--roll:" + extent.roll); //console.log('{"lon":"'+extent.lon+'","lat":"'+extent.lat+'","height":"'+extent.height+'","heading":"'+extent.heading+'","pitch":"'+extent.pitch+'","roll":"'+extent.roll+'"}'); console.log("{'lon':"+extent.lon+",'lat':"+extent.lat+",'height':"+extent.height+",'heading':"+extent.heading+",'pitch':"+extent.pitch+",'roll':"+extent.roll+"}"); return extent; }