一.屏幕坐标
鼠标点击Canvas画布。 Canvas中,默认的坐标系统是以画布的左上角为坐标原点(0, 0),水平向右为X轴,垂直向下为Y轴,以像素为单位。
笛卡尔平面坐标
new Cesium.Cartesian2(x, y)
二.笛卡尔空间直角坐标
new Cesium.Cartesian3(x, y, z)
三.地理坐标
new Cesium.Cartographic(longitude, latitude, height)
代码示例
const hander = new Cesium.ScreenSpaceEventHandlar(viewer.scene.canvas)
let windowPosition
hander.setInputAction((event) => {
// 绑定鼠标左键单击事件 获取鼠标点击的windowPosition
windowPosition = event.position
}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
// 三维模式下(笛卡尔空间直角坐标)
const ray = viewer.camera.getPickRay(windowPosition)
const cartesian = viewer.scene.globe.pick(ray, viewer.scene)
// 二维模式下(笛卡尔空间直角坐标)
const cartesian = scene.camera.pickEllipsoid(position, scene.globe.ellipsoid)
// 笛卡尔空间直角坐标转换为屏幕坐标
const pick = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian)
// 笛卡尔空间直角坐标转换为地理坐标(弧度制)
const cartographic = Cesium.Cartographic.fromCartesian(cartesian)
// 地理坐标(弧度制)转换为笛卡尔空间直角坐标
const postion = Cesium.Cartographic.fromRadians(longitude, latitude, height)
// 笛卡尔空间直角坐标转换为地理坐标(经纬度)
const cartographic = Cesium.Cartographic.fromCartesian(cartesian)
const lat = Cesium.Math.toDegrees(cartographic.latitude)
const lng = Cesium.Math.toDegrees(cartographic.longitude)
const height = cartographic.height
//地理坐标(经纬度)转换为笛卡尔空间直角坐标
const position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
// 度数与弧度互转
Cesium.Math.toDegrees(radians)
Cesium.Math.toRadians(degrees)