当前位置:网站首页>Cesium 点击获取模型表面经纬度高程坐标(三维坐标)
Cesium 点击获取模型表面经纬度高程坐标(三维坐标)
2022-07-03 06:03:00 【最凶残的小海豹】
下面代码适用于 模型表面 三维坐标。
注意:
- 下面代码只适用于模型、倾斜摄影等表面坐标获取(地形三维坐标情况我其他文章)
- 需要开启深度检测
depthTestAgainstTerrain = true
。
// 开启深度检测
viewer.scene.globe.depthTestAgainstTerrain = true
var handler = new Cesium.ScreenSpaceEventHandler(gvEarth.scene.canvas);
handler.setInputAction(function (evt) {
var scene = gvEarth.scene;
// 判断场景的模式,不能是 变形模式
if (scene.mode !== Cesium.SceneMode.MORPHING) {
// scene.pick: 返回scene中指定位置的顶端的primitive属性的一个对象
let pickedObject = scene.pick(evt.position);
// 判断是否拾取到模型
if (scene.pickPositionSupported && Cesium.defined(pickedObject) && pickedObject.node) {
let cartesian = gvEarth.scene.pickPosition(evt.position);
// 是否获取到空间坐标
if (Cesium.defined(cartesian)) {
// // 空间坐标转世界坐标(弧度)
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
// 弧度转为角度(经纬度)
let lon = Cesium.Math.toDegrees(cartographic.longitude);
let lat = Cesium.Math.toDegrees(cartographic.latitude);
//模型高度
let height = cartographic.height;
console.log('模型表面的经纬度高程是:', {
x: lon, y: lat, height: height })
}
}
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
说明一下:
viewer.scene.pickPosition(e.position)在没有3dTile模型下的笛卡尔坐标不准问题,可以通过开启深度检测解决 viewer.scene.globe.depthTestAgainstTerrain = true
viewer.scene.pick: 返回scene
中指定位置的顶端的primitive属性的一个对象。适用于选取3dTile,改变3dTile的属性(例如颜色)。
viewer.scene.pickPosition: 返回一个被屏幕坐标和深度缓存指定的点。适用于模型表面位置的选取,通俗的说就是camera看过去第一个被挡住的模型(如entity)上的坐标,通常结合其他的选取方式一块用于选取模型和球上的点(结合viewer.scene.pick一同使用)。
边栏推荐
- 70 shell script interview questions and answers
- [branch and cycle] | | super long detailed explanation + code analysis + a trick game
- Virtual memory technology sharing
- Niuke JS separator
- phpstudy设置项目可以由局域网的其他电脑可以访问
- pytorch 搭建神经网络最简版
- 伯努利分布,二项分布和泊松分布以及最大似然之间的关系(未完成)
- PHP用ENV获取文件参数的时候拿到的是字符串
- Leetcode problem solving summary, constantly updating!
- [teacher Zhao Yuqiang] Alibaba cloud big data ACP certified Alibaba big data product system
猜你喜欢
从小数据量 MySQL 迁移数据到 TiDB
卷积神经网络CNN中的卷积操作详解
[teacher Zhao Yuqiang] Cassandra foundation of NoSQL database
Solve the 1251 client does not support authentication protocol error of Navicat for MySQL connection MySQL 8.0.11
Final review (Day5)
一起上水碩系列】Day 9
SVN分支管理
伯努利分布,二项分布和泊松分布以及最大似然之间的关系(未完成)
Kubernetes notes (I) kubernetes cluster architecture
项目总结--2(Jsoup的基本使用)
随机推荐
Alibaba cloud OOS file upload
Troubleshooting of 32GB Jetson Orin SOM failure to brush
Complete set of C language file operation functions (super detailed)
Jackson: what if there is a lack of property- Jackson: What happens if a property is missing?
Es remote cluster configuration and cross cluster search
Qt读写Excel--QXlsx插入图表5
Bernoulli distribution, binomial distribution and Poisson distribution, and the relationship between maximum likelihood (incomplete)
[Zhao Yuqiang] deploy kubernetes cluster with binary package
Bio, NiO, AIO details
Sorry, this user does not exist!
Sophomore dilemma (resumption)
Understand one-way hash function
1. Somme des deux nombres
Jetson AgX Orin platform porting ar0233 gw5200 max9295 camera driver
[together Shangshui Shuo series] day 7 content +day8
[minesweeping of two-dimensional array application] | [simple version] [detailed steps + code]
Today, many CTOs were killed because they didn't achieve business
2022.6.30DAY591
AtCoder Beginner Contest 258(A-D)
PHP用ENV获取文件参数的时候拿到的是字符串