cesium-事件监听(获取点击位置的经纬度和高度)

介绍

let handler = new Cesium.ScreenSpaceEventHandler(element);

处理用户输入事件。可以添加自定义功能以在用户输入时执行。

成员

Cesium.ScreenSpaceEventHandler.mouseEmulationIgnoreMilliseconds=800

接收到任何触摸事件后鼠标事件将被禁用的时间量(以毫秒为单位),这样任何模拟的鼠标事件都将被忽略。

Cesium.ScreenSpaceEventHandler.touchHoldDelayMilliseconds=1500

在屏幕上的触摸变为触摸并按住之前的时间量(以毫秒为单位)。

方法

destroy()

移除此对象持有的侦听器。

一旦一个对象被销毁,它就不应该被使用;调用除此之外的任何函数 isDestroyed都会导致DeveloperError异常。因此,如示例中所做的那样,将返回值 ( undefined) 分配给对象。

handler = handler && handler.destroy();

getInputAction(type, modifier)

返回要在输入事件上执行的函数。

姓名 类型 描述
type 数字 输入事件的ScreenSpaceEventType
modifier 数字 type发生事件时持有的keyboardEventModifier键

返回:要在输入事件上执行的函数。

isDestroyed()

如果此对象被销毁,则返回 true;否则为假。

如果这个对象被破坏了,它就不应该被使用;调用除此之外的任何函数 isDestroyed都会导致DeveloperError异常。

返回:如果这个对象被破坏了,true;否则,false

removeInputAction(type, modifier)

删除要在输入事件上执行的函数。

姓名 类型 描述
type 数字 输入事件的ScreenSpaceEventType
modifier 数字 type发生事件时持有的keyboardEventModifier键

setInputAction(action, type, modifier)

设置要在输入事件上执行的功能。

姓名 类型 描述
action 功能 当输入事件发生时要执行的函数
type 数字 输入事件的ScreenSpaceEventType
modifier 数字 type发生事件时持有的keyboardEventModifier键

屏幕空间事件类型

ScreenSpaceEventType

此枚举类型用于对鼠标事件进行分类:向下、向上、单击、双击、移动和按住按钮时移动。

姓名 类型 描述
LEFT_DOWN 数字 表示鼠标左键按下事件。
LEFT_UP 数字 表示鼠标左键向上事件。
LEFT_CLICK 数字 表示鼠标左键单击事件。
LEFT_DOUBLE_CLICK 数字 表示鼠标左键双击事件。
RIGHT_DOWN 数字 表示鼠标左键按下事件。
RIGHT_UP 数字 表示鼠标右键向上事件。
RIGHT_CLICK 数字 表示鼠标右键单击事件。
MIDDLE_DOWN 数字 表示鼠标中键按下事件。
MIDDLE_UP 数字 表示鼠标中键向上事件。
MIDDLE_CLICK 数字 表示鼠标中键单击事件。
MOUSE_MOVE 数字 表示鼠标移动事件。
WHEEL 数字 表示鼠标滚轮事件。
PINCH_START 数字 表示触摸表面上的两指事件的开始。
PINCH_END 数字 表示触摸表面上的两指事件的结束。
PINCH_MOVE 数字 表示触摸表面上两指事件的变化。

示例

Cesium.ScreenSpaceEventType.LEFT_CLICK

示例方法

监听鼠标左击事件

let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (click) {console.log("监听的是鼠标左击事件");// 这里编写业务代码
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

移除鼠标左击事件

handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);

获取点击位置的经纬度和高度

核心代码

let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);handler.setInputAction(function (click) {// 创建二维笛卡尔点let pick = new Cesium.Cartesian2(click.position.x, click.position.y);if (pick) {//从相机位置通过windowPosition 世界坐标中的像素创建一条射线。viewer.camera.getPickRay(pick)//查找射线与渲染的地球表面之间的交点。射线必须以世界坐标给出。let cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(pick), viewer.scene);if (cartesian) {//世界坐标转地理坐标(弧度)let cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian)if (cartographic) {//海拔let height = viewer.scene.globe.getHeight(cartographic)//视角海拔高度let he = Math.sqrt(viewer.scene.camera.positionWC.x * viewer.scene.camera.positionWC.x +viewer.scene.camera.positionWC.y * viewer.scene.camera.positionWC.y +viewer.scene.camera.positionWC.z * viewer.scene.camera.positionWC.z)let he2 = Math.sqrt(cartesian.x * cartesian.x + cartesian.y * cartesian.y + cartesian.z * cartesian.z)//地理坐标(弧度)转经纬度坐标let point = [(cartographic.longitude / Math.PI) * 180,(cartographic.latitude / Math.PI) * 180,]let lon = point[0];let lat = point[1];console.log("经度:" + point[0] + "纬度:" + point[1] + "高程:" + height);console.log("视角高度:"+(he - he2));//添加点let entity = new Cesium.Entity({id: 'measure',position: Cesium.Cartesian3.fromDegrees(lon, lat, that.elevation),point: {pixelSize: 20,color: Cesium.Color.RED.withAlpha(0.9),outlineColor: Cesium.Color.RED.withAlpha(0.9),outlineWidth: 1,disableDepthTestDistance: Number.POSITIVE_INFINITY,heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,}});viewer.entities.add(entity);}}}}, Cesium.ScreenSpaceEventType.LEFT_CLICK);//监听鼠标左击事件

实现效果

cesium-事件监听(获取点击位置的经纬度和高度)相关推荐

  1. maptalks常见操作——图层置顶置底、添加清空图层、添加标注、切换底图、添加缩放工具、事件监听(点击面出弹框)、右键菜单、绘制mark、锁定视角

    maptalks常见操作--图层置顶置底.添加清空图层.添加标注.切换底图.添加缩放工具.事件监听(点击面出弹框).右键菜单.绘制mark.锁定视角 1.图层置顶 置底 layer.show().br ...

  2. openlayers学习——10、openlayers监听获取鼠标坐标位置

    openlayers监听获取鼠标坐标位置 前言:基于Vue,学习openlayers,根据官网demo,记录常用功能写法.本人不是专业GIS开发,只是记录,方便后续查找. 参考资料: openlaye ...

  3. Java事件侦听器函数_SWT 计算器 按钮事件监听 获取按钮text值

    用swt插件做计算器,监听所有按钮.通过按钮text值判断哪个按钮被点击,如"0"按钮被点击,就在text框里加个0.现在问题是怎样在监听函数里得到button的text值.10个 ...

  4. android怎么设置按钮点击事件监听,Android点击Button按钮的四种事件监听方法总结...

    首先我们在activity_main.xml里面先定义一个Button空间 好,现在要我们来看点击事件的四种写法: 1.最常见的一种写法--匿名的内部类做为事件监听器类 package com.bas ...

  5. 天地图获取点击位置的经纬度

    <!DOCTYPE html> <html> <head><meta http-equiv="content-type" content= ...

  6. touch事件总结,监听屏幕点击事件

    Touch对象--MDN TouchEvent--MDN 一.问题背景 click事件在移动端的300毫秒延迟问题 当需要监听诸如左滑.右滑之类的事件 二.知识点概括 1. 事件类型 touchsta ...

  7. angular4点击事件监听_JavaScript从零开始——DOM事件编程(1)

    事件的本质是程序各个组成部分之间的一种通信方式,也是异步编程的一种实现.DOM 支持大量的事件,本章开始,我们一起看看 DOM 的事件编程. 1 概念 DOM 的事件操作(监听和触发),都定义在Eve ...

  8. java 监听鼠标点击_java 事件监听 - 鼠标

    java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...

  9. Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作

    <div id="divId" class="divTable"><div class="tableBody">&l ...

  10. android 判断按钮是否已经有onclicklinstener,通过点击事件监听setOnClickListener彻底理解回调...

    前言 老司机们对于回调肯定熟悉得不能再熟悉了,但是新司机可能还是一脸懵逼的,我比较笨,当年懵逼了好久,看夏安明的这一篇博客地址,虽然下边的留言都是,写得好!懂了懂了!但是我当时看了三遍还是不懂好吗 - ...

最新文章

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]...
  2. AOP 工厂对象之ScopedProxyFactoryBean 原理解析
  3. 双系统重装windows后如何恢复ubuntu启动项
  4. python---Socket编程
  5. 【懒癌发作】收集各种懒癌发作时用程序写作业的程序
  6. Flask 模板 之 变量和过滤器
  7. 无符号有符号乘法_【编译笔记】变量除以常量的优化(一)——无符号除法
  8. 如何在ant里import
  9. 随想录(协议栈的基本技术)
  10. JAVA--异常(1)
  11. 区块链应用 | 区块链火了,这到底是虚火还是实火?
  12. 【转】snort 笔记2 ----- 规则编写
  13. mac安装mysql8.0
  14. 12864液晶模块的详细使用
  15. 海康存储硬盘盒开箱+小螃蟹RTL9210固件更新+量产软件下载
  16. 浏览器解析jsx_jsx的本质
  17. 基于PHP+MySQL客户信息管理系统的设计与实现
  18. 图计算的黄金时代 知识图谱背后的数据价值
  19. 功率电感的两个额定电流 Isat 与 Irms
  20. 85. 如何用 OPA5 编写测试用例来测试用户输入文本的功能

热门文章

  1. IT牛人---3IE工程师的传奇
  2. Failed installing tomcat9 service
  3. 初中计算机教案ps,初中信息技术《认识Photoshop CS2的工作界面》教案
  4. CAD教程:CAD自定义菜单和工具栏的操作技巧
  5. java哈夫曼编码译码_java实现哈夫曼编码
  6. Abbot和Marathon比较
  7. GUI 自动测试工具[2021清单]
  8. 设计模式-行为型软件设计模式(二)
  9. win10解压安装mysql缺少MSVCR120.dll文件的问题
  10. SOUI中View类型的控件数据更新的例子