获取相机的朝向及位置/ function getCameraViewer() { const position=cartesianTolngLatAlt(viewer.scene.camera.position); const cameraViewer={ longitude:position.Longitude, latitude:position.Latitude, height:position.Height, head:viewer.camera.heading, pitch:viewer.camera.pitch, roll:viewer.camera.roll } console.log(cameraViewer);
return cameraViewer;
} /设置相机画面朝向/ function setCameraViewer(element) { viewer.scene.camera.setView({ destination: new Cesium.Cartesian3.fromDegrees( element.longitude,element.latitude,element.height), orientation: { heading: element.head, pitch: element.pitch, roll: element.roll, }, }); }
/**
-
@description 将笛卡尔坐标系转成经纬度高程
-
@param {Object} cartesianObj 笛卡尔坐标系对象 {x, y, z}
-
@returns 返回经纬度高程对象 */ function cartesianTolngLatAlt(cartesianObj) { if (!cartesianObj || Object.keys(cartesianObj).length !== 3) { throw new Error('请传入合法的cartesian对象 {x, y, z}') }
let position=null;
const cartesian3 = new Cesium.Cartesian3(cartesianObj.x, cartesianObj.y, cartesianObj.z); const cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian3); const lat = Cesium.Math.toDegrees(cartographic.latitude); const lng = Cesium.Math.toDegrees(cartographic.longitude); const height = cartographic.height;
position= { Longitude:lng,Latitude:lat,Height:height }
return position; }