Cesium 选择坐标

本文介绍如何在Cesium中使用ScreenSpaceEventHandler准确获取地图上的位置,特别强调了在无模型或表面时启用地形深度检测的重要性。通过实例演示了从窗口坐标获取笛卡尔坐标并转换为WGS84的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从地图上选择坐标

注意:调用pickPosition 的时候 如果坐标处没有倾斜摄影表面、模型时,获取的笛卡尔坐标不准,此时要开启地形深度检测:

viewer.scene.globe.depthTestAgainstTerrain = true; //默认为false。

完整代码:

//注意注意
//若屏幕坐标处没有倾斜摄影表面、模型时,获取的笛卡尔坐标不准,此时要开启地形深度检测viewer.scene.globe.depthTestAgainstTerrain = true; //默认为false。

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (movement) {
//通过viewer.scene.pickPosition(movement.position)获取,根据窗口坐标,从场景的深度缓冲区中拾取相应的位置,返回笛卡尔坐标 此时是Cartesian2坐标。
     var position = viewer.scene.pickPosition(movement.position);
     console.log(position);
     //笛卡尔空间直角坐标系转换为WGS84

     //第一步 笛卡尔空间直角坐标系=》弧度
     let cartographic = Cesium.Cartographic.fromCartesian(position)

     //第二部 弧度=》WGS84经纬度
     let lng = Cesium.Math.toDegrees(cartographic.longitude)
     let lat = Cesium.Math.toDegrees(cartographic.latitude)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值