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
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值