Cesium 超图 获取画面坐标

58 阅读1分钟

获取相机的朝向及位置/ 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; }