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)
posted @ 2021-07-18 10:39  贝尔塔猫  阅读(1210)  评论(0编辑  收藏  举报