目前我用了Cesium.Cartesian3.fromDegrees 就会将后台返回的坐标给转换为cesium中的笛卡尔坐标系(X,Y,Z)来显示了,所以就导致地图上面显示的位置又偏差,请问大佬们,如何将返回的坐标点按照WGS84经纬度显示出来呢?
// const positions = ref([
// // { longitude: 104.227155465, latitude: 30.571566765, },//中心点
// // { longitude: 104.22621696, latitude: 30.57299515 }, // 左上角
// // { longitude: 104.22809397, latitude: 30.57299515 }, // 右上角
// // { longitude: 104.22621696, latitude: 30.57013838 }, // 左下角
// // { longitude: 104.22809397, latitude: 30.57013838 }, // 右下角
// ])
// viewer.value.entities.removeAll();
// 添加点
positions.value.forEach((position, index) => {
let cartesian3 = Cesium.Cartesian3.fromDegrees(position.longitude, position.latitude)
viewer.value.entities.add({
position: cartesian3,
point: {
pixelSize: 10,
color: Cesium.Color.RED,
outlineColor: Cesium.Color.WHITE,
outlineWidth: 1,
},
label: {
// text: `点${index + 1}`,
font: '14pt monospace',
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
outlineWidth: 2,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,//垂直位置
pixelOffset: new Cesium.Cartesian2(0, -9), //偏移
},
});
});
Cesium支持的地理坐标系WGS84和莫卡托,默认就是WGS84,不过Cesium渲染不是对地理坐标系进行渲染,所以需要将地理坐标系转换为空间坐标系,也就是Cartesian3,这个转换是不可少的,但是这个转换不会造成位置偏移,如果发生偏移那么检查下自己的代码是不是手动产生了偏移(在三维上有时候视角不同,看着位置也不同,另外是否开启深度检测,也会影响视觉上的效果)