cesium 局部加载_Cesium中部分高度的讲解
发布日期:2021-06-24 16:22:03 浏览次数:2 分类:技术文章

本文共 1447 字,大约阅读时间需要 4 分钟。

1、地形高度的获取

方法a: 通过事件获取到像素坐标,然后转为世界坐标,再求地形高度

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);

handler.setInputAction(function(evt) {

var ray=viewer.camera.getPickRay(evt.position);

var cartesian=viewer.scene.globe.pick(ray,viewer.scene);

var cartographic=Cesium.Cartographic.fromCartesian(cartesian);

var height = cartographic.height的值为地形高度。

}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

方法b: 先转为经纬度,通过viewer.scene.globe.getHeight(cartographic) 直接求地形高度,cartographic.height可以为0

方法c: Cesium.sampleTerrain 获取简单地形高度;(异步)

方法d: Cesium.sampleTerrainMostDetailed 获取精确地形高度 ;(异步)

地形高度获取小结:如果你是在事件里获取可用a方法,如果你要是想实时获取可用b,其它情形可用c

2、模型表面高度的获取

方法a(通过鼠标点击获取):

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);

handler.setInputAction(function(evt) {

var scene = viewer.scene;

if (scene.mode !== Cesium.SceneMode.MORPHING) {

var pickedObject = scene.pick(evt.position);

if (scene.pickPositionSupported && Cesium.defined(pickedObject) && pickedObject.node) {

var cartesian = viewer.scene.pickPosition(evt.position);

if (Cesium.defined(cartesian)) {

var cartographic = Cesium.Cartographic.fromCartesian(cartesian);

var lng = Cesium.Math.toDegrees(cartographic.longitude);

var lat = Cesium.Math.toDegrees(cartographic.latitude);

var height = cartographic.height;//模型高度

mapPosition={x:lng,y:lat,z:height}

}

}

}

}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

方法b(已知经纬度坐标获取、已知世界坐标同理):

在scene里,提供了两个方法,一个是同步,一个是异步;

fe5c1ce212dca84e4fae70e3fcc19bfb.png

其中sampleheight也可以获取地形的高度也可以获取模型的高度。

转载地址:https://blog.csdn.net/weixin_33800724/article/details/113560136 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql 锁的架构_总结Mysql中的锁
下一篇:python在金融领域的前景_让我们在金融技术领域学习Python~~,一,起来,科技领域,的,python,吧...

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月08日 08时23分23秒