【Cesium基础学习】拾取坐标

【Cesium基础学习】拾取坐标关于注意事项 需要根据具体的业务场景和需求进行判断和处理

大家好,欢迎来到IT知识分享网。

cesium 4种拾取坐标的方法_cesium 点击获取坐标-CSDN博客

拾取坐标的四种方式

1、viewer.scene.pick()

只能获取一个对象,并且是最顶部的对象。如果拾取点没有对象,则会返回undefined

2、viewer.scene.globe.pick()

最好开启深度检测:scene.globe.depthTestAgainstTerrain = true;

3、viewer.scene.camera.pickEllipsoid()

在有地形的情况下误差较大,在使用时需要关闭深度测试

4、viewer.scene.pickPosition()

一定开启深度检测viewer.scene.globe.depthTestAgainstTerrain = true),否则在没有没有3dTile模型的情况下,会出现空间坐标不准的问题。

拾取方式分类

在Cesium中,可以通过鼠标拾取来获取场景中的地理坐标和高度信息。通常,拾取地理坐标的方式可以分为两种:屏幕空间拾取和地理空间拾取。

  1. pickPosition方法

    • 方法:pickPosition方法用于从指定的屏幕位置获取地理坐标和高度信息。
    • 适用范围:适用于场景中的任何地方,包括地形、3D模型和Primitive等。
    • 注意事项:如果拾取到的物体是Primitive,则需要在创建Primitive时设置pickPrimitive属性为true。
  2. pickEllipsoid方法

    • 方法:pickEllipsoid方法用于从指定的屏幕位置获取地理坐标和高度信息,不考虑任何地形或模型。
    • 适用范围:适用于场景中的任何地方,但不考虑地形或模型的高度。
    • 注意事项:适用于简单的地理信息获取,不考虑场景中的复杂地形或3D模型。
  3. pickTerrain方法

    • 方法:pickTerrain方法用于从指定的屏幕位置获取地理坐标和高度信息,考虑地形的高度。
    • 适用范围:主要用于拾取地形表面的高度信息,适用于地形表面的任何位置。
    • 注意事项:对于大规模地形数据,拾取可能会比较耗时,需要考虑性能问题。
  4. sampleTerrainMostDetailed方法

    • 方法:sampleTerrainMostDetailed方法用于从指定的经纬度位置获取地形的最详细高度信息。
    • 适用范围:主要用于获取特定位置的最详细地形高度信息。
    • 注意事项:对于大规模地形数据,获取详细高度信息可能会比较耗时,需要考虑性能问题

关于注意事项,需要根据具体的业务场景和需求进行判断和处理。在实际应用中,通常需要根据拾取到的物体进行相应的业务逻辑处理,例如显示信息窗口、执行特定操作等。

 scene.globe.depthTestAgainstTerrain = true; // 创建一个事件处理器来处理屏幕空间事件 var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas); // 监听鼠标点击事件 handler.setInputAction(function (click) { // 使用pick函数获取点击位置的实际位置 var cartesian = viewer.scene.pickPosition(click.position); if (Cesium.defined(cartesian)) { // 将笛卡尔坐标转换为经纬度坐标 var cartographic = Cesium.Cartographic.fromCartesian(cartesian); var longitudeString = Cesium.Math.toDegrees(cartographic.longitude).toFixed(6); var latitudeString = Cesium.Math.toDegrees(cartographic.latitude).toFixed(6); var heightString = cartographic.height.toFixed(2); console.log('经度:' + longitudeString + ',纬度:' + latitudeString + ',高度:' + heightString) } // 使用Scene.pick来获取3D Tiles的实际高度 var pickedObject = viewer.scene.pick(click.position); if (Cesium.defined(pickedObject)) { // 获取到3D Tiles的高度 const cartographic = Cesium.Cartographic.fromCartesian(cartesian); const height = cartographic.height; const lon=Cesium.Math.toDegrees(cartographic.longitude).toFixed(6); const lat =Cesium.Math.toDegrees(cartographic.latitude).toFixed(6); console.log('点击位置的经度是: ' + lon); console.log('点击位置的纬度是: ' + lat); console.log('点击位置的高度是: ' + height); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

应用【Cesium】坐标拾取—坐标测量_cesinum坐标查询功能-CSDN博客

【Cesium基础学习】拾取坐标

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131146.html

(0)
上一篇 2025-08-09 22:26
下一篇 2025-08-09 22:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信