Cesium中如何获取鼠标单击位置的经纬度

在三维地图窗口中单机地图某一点,如何获取单机位置的经纬度?

/**
 * Cesium.ScreenSpaceEventHandler
 * 处理用户输入事件。可以添加自定义函数,以便在用户输入时执行。 
 */
var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);

/**
 * ScreenSpaceEventHandler.setInputAction(action, type, modifier)
 * 设置要在输入事件上执行的函数。 
 * @action  Function to be executed when the input event occurs.
 * @type  The ScreenSpaceEventType of input event.
 * @modifier A KeyboardEventModifier key that is held when a type event occurs.
 * 
 * Cesium.ScreenSpaceEventType
 * 此枚举类型用于对鼠标事件进行分类:向下、向上、单击、双击、按住按钮时移动和移动。
 * 
 * Cesium.ScreenSpaceEventType.LEFT_CLICK
 * 表示鼠标左键单击事件。
 */
handler.setInputAction(function (event) {
	//获取位置的弧度表示
	var pRadians = earth.pickPosition(event.position);
	//将弧度坐标转换为Cartesian3世界空间直角坐标系坐标
	var pCartesian3 = Cesium.Cartesian3.fromRadians(pRadians[0],pRadians[1],pRadians[2])
	//Cartesian3坐标系转换为Cartographic
    var pCartographic = Cesium.Cartographic.fromCartesian(cartesian3Position);
    //经度
    var longitude = Cesium.Math.toDegrees(pCartographic.longitude);
    //纬度
    var latitude = Cesium.Math.toDegrees(pCartographic.latitude);

	//读完官方文档之后我发现,直接这样就行了,因为earth.pickPosition返回的其实就是一个数组位置,形式如 [1.0, 0.5, 50.0],表示[经度, 纬度, 高度],经纬度以弧度为单位,高度以米为单位
	var longitude = Cesium.Math.toDegrees(pRadians[0]);
	var latitude = Cesium.Math.toDegrees(pRadians[1]);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK)

想要详细了解这些Cesium函数的使用,可以参考cesium的官方文档

  1. Cesium.ScreenSpaceEventHandler
    在这里插入图片描述
    在这里插入图片描述
  2. Cesium.ScreenSpaceEventType
    在这里插入图片描述在这里插入图片描述
  3. Cesium.Cartesian3
    在这里插入图片描述
    在这里插入图片描述
  4. Cesium.Cartographic
    在这里插入图片描述
    在这里插入图片描述
  5. Cesium.Math.toDegrees
    在这里插入图片描述
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
要在Cesium获取WMS图斑的经纬度,可以使用以下方法: 方法1:使用Cesium的内置函数 可以使用Cesium.Cartographic.fromCartesian方法将世界坐标(笛卡尔坐标)转换为经纬度坐标。具体代码如下: ```javascript let cartographic = Cesium.Cartographic.fromCartesian(cartesian); let longitudeString = Cesium.Math.toDegrees(cartographic.longitude); let latitudeString = Cesium.Math.toDegrees(cartographic.latitude); let height = cartographic.height; console.log("经度: " + longitudeString); console.log("纬度: " + latitudeString); console.log("高度: " + height); ``` 方法2:使用Cesium的投影函数 可以使用Cesium.WebMercatorProjection类来进行坐标转换。具体代码如下: ```javascript var WMP = new Cesium.WebMercatorProjection(); var cartographic = WMP.unproject(cartesian); var longitudeString = Cesium.Math.toDegrees(cartographic.longitude); var latitudeString = Cesium.Math.toDegrees(cartographic.latitude); var height = cartographic.height; console.log("经度: " + longitudeString); console.log("纬度: " + latitudeString); console.log("高度: " + height); ``` 这两种方法都可以将世界坐标转换为经纬度坐标,并且可以获取到相应的高度信息。根据你的需求,可以选择使用其一种方法来获取WMS图斑的经纬度信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Cesium坐标拾取及坐标转换](https://blog.csdn.net/liyan_gis/article/details/127565572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值