Cesium中主要使用笛卡尔坐标系,球心相当于原点
z轴不是高度,高度是点到地表的距离,贴在表面高度就为0,z改变,x,y都会随之改变;
1.经纬度转笛卡尔
// (经度 纬度 高度),返回的是一个笛卡尔坐标
const cartesian = Cesium.Cartesian3.formDegrees(113,31,20)
console.log(cartesian)
输出值:
x: -2138083.9792473926
y: 5037010.200839833
z: 3265903.817415441
2.笛卡尔转经纬度
(1)笛卡尔首先转为弧度坐标
const cartographic = Cesium.Cartographic.fromCartesian(cartesian)
console.log(cartographic)
输出值:
height: 19.999999999913584
latitude: 0.541052068118242
longitude: 1.9722220547535925
(2)弧度转经纬度
let lon = Cesium.Math.toDegrees(cartographic.longitude)
let lat = Cesium.Math.toDegrees(cartographic.latitude)
console.log(lon,lat,cartographic.height)
输出值:
lon:113
lat:30.999999999999993
height:19.999999999
不精确是因为js精度丢失的问题,对坐标精度不影响。