一、坐标名称
- 平面坐标系(Cartesian2)
- 世界坐标系(Cartesian3)
- 经纬度(地理坐标系)
- 弧度(Cartographic)
二、坐标系转换
1. 屏幕坐标转经纬度
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
//鼠标左键点击
handler.setInputAction((event) => {
// event.position 是鼠标获取的屏幕坐标,也就是2D笛卡尔点(Cartesian2)
// 屏幕坐标转为世界坐标
let cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(event.position), viewer.scene);
// 世界坐标转换为弧度
let ellipsoid = viewer.scene.globe.ellipsoid;
let cartographic = ellipsoid.cartesianToCartographic(cartesian);
// 弧度转换为经纬度
let lon = Cesium.Math.toDegrees(cartographic.longitude); // 经度
let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度
console.log("点击的的经纬度坐标是:", {
"经度:": lon,
"纬度:": lat
});
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
2. 经纬度转换为世界坐标
Cesium.Cartesian3.fromDegrees('经度', '纬度', '高')
3. 世界坐标转换为经纬度
cartesian
为世界坐标
// 世界坐标转换为弧度
let ellipsoid = gvEarth.scene.globe.ellipsoid;
let cartographic = ellipsoid.cartesianToCartographic(cartesian);
// 弧度转换为经纬度
let lon = Cesium.Math.toDegrees(cartographic.longitude); // 经度
let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度
let alt = cartographic.height; // 高度
4. 屏幕坐标转世界坐标
event.position
是屏幕坐标
//
let cartesian = gvEarth.scene.globe.pick(gvEarth.camera.getPickRay(event.position), viewer.scene);
5. 世界坐标转屏幕坐标
cartesian3
是世界坐标
Cartesian = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian3);
let lon = Cartesian.x; // 经度
let lat = Cartesian.y; // 纬度
6. 角度转为弧度
弧度值 = Cesium.Math.toRadians(角度值);
7. 弧度转为角度
角度值 = Cesium.Math.toDegrees(弧度值);