下面代码适用于 二维坐标
,获取椭球体表面的经纬度坐标。
handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(event => {
// 屏幕坐标转为空间坐标
let cartesian = viewer.camera.pickEllipsoid(event.position, viewer.scene.globe.ellipsoid);
if (cartesian == undefined) {
console.log('没有获取到坐标')
} else {
// 空间坐标转世界坐标(弧度)
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
// 弧度转为角度(经纬度)
let lon = Cesium.Math.toDegrees(cartographic.longitude); // 经度值
let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度值
console.log('经纬度是:', { x: lon, y: lat });
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
取消左键点击事件
handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
pickEllipsoid
返回的是椭圆球体表面的一个Cartesian3坐标。
注意: pickEllipsoid
在加载地形的情况下有一定误差,地形凹凸程度越大,误差越大,所以上述方面只能用于 二维坐标
的获取。
三维坐标请看我的另一篇文章