Cesium的坐标系
Cesium中常用的坐标系主要有两种:WGS84坐标系和笛卡尔空间直角坐标系。平时我们常见的某个点的经纬度就是在WGS84坐标系下某个点的坐标,它的坐标原点在椭球的质心;而笛卡尔坐标系主要是用来做空间位置的变化如平移、旋转和缩放等等,它的坐标原点在椭球的中心
- 笛卡尔平面坐标(Cartesian2)
new Cesium.Cartesian2(x, y)
- 笛卡尔空间直角坐标(Cartesian3)
new Cesium.Cartesian3(x, y, z)
- 地理坐标(Cartographic) lng,lat,height的单位为弧度
new Cesium.Cartographic(longitude, latitude, height)
单位说明
Cartesian3的单位为:米/米/米
Cartographic的单位为:弧度/弧度/米
使用是注意经纬伟度的单位:使用Cesium.Math.toDegrees({弧度})
方法可将弧度输出为度
1.获取屏幕上的坐标
// 获取画布
var canvas = viewer.scene.canvas;
var mouseHander = new Cesium.ScreenSpaceEventHandler(canvas);
// 绑定鼠标左点击事件
mouseHander.setInputAction(function (event){
// 获取鼠标点的windowPosition
var windowPosition = event.position;
console.log(windowPosition)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);)
2.屏幕坐标转换为Cartesian3
var ray = viewer.camera.getPickRay(windowPosition);
var cartesian = viewer.scene.globe.pick(ray, viewer.scene);
console.log(cartesian )
3.Cartesian3转屏幕坐标
var windowPos = Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, Cartesian3);
console.log(windowPos );
4.Cartesian3转Cartesian2
Cesium.Cartesian2.fromCartesian3(cartesian, result)
5.WGS84转Cartesian3
Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result)
6.Cartesian3转WGS84坐标
var ellipsoid = viewer.scene.globe.ellipsoid;
var xyz = new Cesium.Cartesian3(x, y, z);
var wgs84 = ellipsoid.cartesianToCartographic(xyz);
// 这时输出的wgs84为弧度单位,需要转为度可参考如下代码
// Cesium.Math.toDegrees(wgs84.longitude)
// Cesium.Math.toDegrees(wgs84.latitude)
// Cesium.Math.toDegrees(wgs84.height)
7. WGS84度转弧度
var coord_wgs84 = Cesium.Cartographic.fromDegrees(lng, lat, alt)