cesium 屏幕坐标和经纬度互转

1. 屏幕坐标到经纬度的转换

screenToGeoCoordinates(screenX, screenY, viewer)
{
   
   
  let ellipsoid = viewer.scene.globe.ellipsoid
  // 使用camera.pickEllipsoid来获取与屏幕坐标相交的点
  let cartesian = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(screenX, screenY), ellipsoid)

  if (!cartesian)
  {
   
   
    console.log('无法在屏幕坐标处找到交点')
    return null
  }
Cesium中,要实现屏幕坐标经纬度的相互转换,可以按以下方式操作: ### 屏幕坐标经纬度 要将屏幕坐标换为经纬度,可借助`Scene.pickPosition`或`Scene.camera.pickEllipsoid`方法。以下是示例代码: ```javascript // 获取屏幕坐标 const screenPosition = new Cesium.Cartesian2(x, y); // 使用Scene.pickPosition方法(考虑地形) const cartesian = viewer.scene.pickPosition(screenPosition); if (cartesian) { const cartographic = Cesium.Cartographic.fromCartesian(cartesian); const longitude = Cesium.Math.toDegrees(cartographic.longitude); const latitude = Cesium.Math.toDegrees(cartographic.latitude); console.log(`经度: ${longitude}, 纬度: ${latitude}`); } // 使用Scene.camera.pickEllipsoid方法(不考虑地形) const cartesian2 = viewer.scene.camera.pickEllipsoid(screenPosition, viewer.scene.globe.ellipsoid); if (cartesian2) { const cartographic2 = Cesium.Cartographic.fromCartesian(cartesian2); const longitude2 = Cesium.Math.toDegrees(cartographic2.longitude); const latitude2 = Cesium.Math.toDegrees(cartographic2.latitude); console.log(`经度: ${longitude2}, 纬度: ${latitude2}`); } ``` ### 经纬度屏幕坐标 要将经纬度换为屏幕坐标,可使用`Scene.cartesianToCanvasCoordinates`方法。以下是示例代码: ```javascript // 经纬度坐标 const longitude = Cesium.Math.toRadians(longitudeInDegrees); const latitude = Cesium.Math.toRadians(latitudeInDegrees); const height = 0; // 换为笛卡尔坐标 const cartesian = Cesium.Cartesian3.fromRadians(longitude, latitude, height); // 换为屏幕坐标 const screenPosition = viewer.scene.cartesianToCanvasCoordinates(cartesian); if (screenPosition) { console.log(`屏幕坐标 X: ${screenPosition.x}, Y: ${screenPosition.y}`); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值