Cesium 各种坐标转换
2、打印出当前经度、纬度、高度、摄像头参数
const { longitude, latitude, height } = viewer.camera._positionCartographic
console.log(`${Cesium.Math.toDegrees(longitude)}, ${Cesium.Math.toDegrees(latitude)}, ${Math.ceil(height)}`)
console.log(`{ heading: ${viewer.camera.heading}, pitch: ${viewer.camera.pitch}, roll: ${viewer.camera.roll} }`)
3、弧度经纬度互转
Cesium 中没有具体的经纬度对象,要得到经纬度对象,需要先弧度,再进行转换。
// 经纬度转弧度
Cesium.Math.toRadians(degrees)
// 弧度转经纬度
Cesium.Math.toDegrees(radians)
4、经纬度坐标转世界坐标
var cartesian3 = Cesium.Cartesian3.fromDegrees(lng, lat, height)
5、世界坐标转经纬度坐标
// 第一步: 笛卡尔空间直角坐标系转为地理坐标(弧度制)
var cartographic = Cesium.Cartographic.fromCartesian(cartesian3)
// 第二步
var lat = Cesium.Math.toDegrees(cartographic.latitude)
var lng = Cesium.Math.toDegrees(cartographic.longitude)
var height = cartographic.height
6、屏幕坐标和世界坐标转换
// 二维屏幕坐标转为三维笛卡尔空间直角坐标(世界坐标)
var cartesian3 = scene.globe.pick(
viewer.camera.getPickRay(windowPosition),
scene,
)
// 三维笛卡尔空间直角坐标转为二维屏幕坐标,结果是 Cartesian2 对象,取出XY即为屏幕坐标。
windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(screen, cartesian3)