【Cesium】鼠标点击底图拾取坐标、图层
当我们遇到需要点击三维底图拾取图层做相关处理的需求时,需要怎么实现呢?
Cesium常用的鼠标事件包括左击、右击,左键双击等,分别对应Cesium.ScreenSpaceEventType.LEFT_CLICK、Cesium.ScreenSpaceEventType.RIGHT_CLICK、Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK。
其他诸如鼠标中键点击、左键按下/弹起等,若有需要可自行百度查询。用法如下:
let handler1 = new Cesium.ScreenSpaceEventHandler(_viewer.scene.canvas);
handler1.setInputAction(async function(event) {}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
当进入页面,添加鼠标的点击事件监听,以鼠标左击为例。该事件返回鼠标在屏幕点击的位置,再调用 pickPosition 方法即可转为笛卡尔坐标,通过笛卡尔坐标可以转换成经纬度坐标。
const that = this
const _viewer = window.viewer
let handler1 = new Cesium.ScreenSpaceEventHandler(_viewer.scene.canvas);
handler1.setInputAction(async function(event) {
// 1. 拾取经纬度坐标
let cartesian
if(viewer.scene.pickPosition(event.position)){
cartesian = viewer.scene.pickPosition(event.position);
}else{
cartesian = viewer.camera.pickEllipsoid(event.position)
}
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
let lng = Cesium.Math.toDegrees(cartographic.longitude); // 经度
let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度
// 2. 拾取图层
let pickRay = viewer.camera.getPickRay(event.position);
let pickLayer = viewer.imageryLayers.pickImageryLayers(pickRay, viewer.scene)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
以上就是鼠标左击拾取坐标、图层的实现方法^-^
CSDN-Ada助手: 恭喜您写了第10篇博客,标题看起来十分有趣。对于无界嵌入子应用的使用,您的经验分享会对许多读者有所帮助。接下来,我希望您能够继续创作,分享更多有趣的前端知识。或许您可以考虑写一篇关于微服务的博客,这也是目前前端领域热门的话题之一。再次感谢您的分享,期待您的下一篇博客。 CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply10 看奖励名单。
CSDN-Ada助手: 非常感谢您分享的博客,恭喜您写完了第9篇!看到您的标题是关于Vue3.3的新特性,我很期待能够在您的博客中了解更多有关Vue3.3的知识。我希望您可以继续分享您的经验和见解,让更多的人了解这些新特性,同时也希望您能够尝试更多不同的主题,展示您的多元创作风格。总之,感谢您的付出,期待您的下一篇博客! CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply9 看奖励名单。
CSDN-Ada助手: 恭喜您写了这么有价值的博客!自定义覆盖物点的样式确实是一个很实用的功能,感谢您分享了这些知识。期待您继续创作,也希望您能够分享更多关于高德地图的使用技巧和经验,让更多人受益。再次感谢您的分享! CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply7 看奖励名单。
CSDN-Ada助手: 恭喜您写了第四篇博客,内容非常实用!对于高德地图地址关键词模糊检索的重写,您的经验和技巧无疑会帮助到很多人。希望您能够继续保持创作的热情,分享更多有价值的技术文章。下一步,建议您可以探索其他地图相关的功能,分享您的思考和实践,从而帮助更多人解决实际问题。再次感谢您的分享! CSDN 会根据你创作的前四篇博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply4 看奖励名单。
CSDN-Ada助手: 非常感谢用户分享的这篇博客,介绍了高德地图的点的分组聚合功能,让我们更加深入了解这一功能的应用。恭喜用户不断创作,分享经验和知识。接下来,建议用户可以进一步探讨高德地图的其他功能,或者分享使用高德地图的实践经验,让更多人受益。谢谢用户的分享! CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply6 看奖励名单。