cesium-事件监听(获取点击位置的经纬度和高度)
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-事件监听(获取点击位置的经纬度和高度)相关推荐
- maptalks常见操作——图层置顶置底、添加清空图层、添加标注、切换底图、添加缩放工具、事件监听(点击面出弹框)、右键菜单、绘制mark、锁定视角
maptalks常见操作--图层置顶置底.添加清空图层.添加标注.切换底图.添加缩放工具.事件监听(点击面出弹框).右键菜单.绘制mark.锁定视角 1.图层置顶 置底 layer.show().br ...
- openlayers学习——10、openlayers监听获取鼠标坐标位置
openlayers监听获取鼠标坐标位置 前言:基于Vue,学习openlayers,根据官网demo,记录常用功能写法.本人不是专业GIS开发,只是记录,方便后续查找. 参考资料: openlaye ...
- Java事件侦听器函数_SWT 计算器 按钮事件监听 获取按钮text值
用swt插件做计算器,监听所有按钮.通过按钮text值判断哪个按钮被点击,如"0"按钮被点击,就在text框里加个0.现在问题是怎样在监听函数里得到button的text值.10个 ...
- android怎么设置按钮点击事件监听,Android点击Button按钮的四种事件监听方法总结...
首先我们在activity_main.xml里面先定义一个Button空间 好,现在要我们来看点击事件的四种写法: 1.最常见的一种写法--匿名的内部类做为事件监听器类 package com.bas ...
- 天地图获取点击位置的经纬度
<!DOCTYPE html> <html> <head><meta http-equiv="content-type" content= ...
- touch事件总结,监听屏幕点击事件
Touch对象--MDN TouchEvent--MDN 一.问题背景 click事件在移动端的300毫秒延迟问题 当需要监听诸如左滑.右滑之类的事件 二.知识点概括 1. 事件类型 touchsta ...
- angular4点击事件监听_JavaScript从零开始——DOM事件编程(1)
事件的本质是程序各个组成部分之间的一种通信方式,也是异步编程的一种实现.DOM 支持大量的事件,本章开始,我们一起看看 DOM 的事件编程. 1 概念 DOM 的事件操作(监听和触发),都定义在Eve ...
- java 监听鼠标点击_java 事件监听 - 鼠标
java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...
- Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作
<div id="divId" class="divTable"><div class="tableBody">&l ...
- android 判断按钮是否已经有onclicklinstener,通过点击事件监听setOnClickListener彻底理解回调...
前言 老司机们对于回调肯定熟悉得不能再熟悉了,但是新司机可能还是一脸懵逼的,我比较笨,当年懵逼了好久,看夏安明的这一篇博客地址,虽然下边的留言都是,写得好!懂了懂了!但是我当时看了三遍还是不懂好吗 - ...
最新文章
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]...
- AOP 工厂对象之ScopedProxyFactoryBean 原理解析
- 双系统重装windows后如何恢复ubuntu启动项
- python---Socket编程
- 【懒癌发作】收集各种懒癌发作时用程序写作业的程序
- Flask 模板 之 变量和过滤器
- 无符号有符号乘法_【编译笔记】变量除以常量的优化(一)——无符号除法
- 如何在ant里import
- 随想录(协议栈的基本技术)
- JAVA--异常(1)
- 区块链应用 | 区块链火了,这到底是虚火还是实火?
- 【转】snort 笔记2 ----- 规则编写
- mac安装mysql8.0
- 12864液晶模块的详细使用
- 海康存储硬盘盒开箱+小螃蟹RTL9210固件更新+量产软件下载
- 浏览器解析jsx_jsx的本质
- 基于PHP+MySQL客户信息管理系统的设计与实现
- 图计算的黄金时代 知识图谱背后的数据价值
- 功率电感的两个额定电流 Isat 与 Irms
- 85. 如何用 OPA5 编写测试用例来测试用户输入文本的功能