1.51版新增的sampleHeight和clampToHeight函数虽然能获取3ditles数据指定位置的求交点,但是有一个问题,它只是以当前视角相机能看到的视野进行计算,视野范围之外,要么模型过于粗糙,要么就没有调度,很可能求取不到数值。
参考:https://www.jianshu.com/p/a5d07bb47809
/** * 获取坐标的 贴模型高度 * opts支持: 是否异步 asyn:true 异步回调方法callback返回“新高度”和“原始的Cartographic坐标” */ function getSurface3DTilesHeight(scene, position, opts) { opts = opts || {}; //原始的Cartographic坐标 opts.cartesian = opts.cartesian || Cesium.Cartographic.fromCartesian(position); var carto = opts.cartesian; var callback = opts.callback || opts.calback; //兼容不同参数名 //是否异步求精确高度 if (opts.asyn) { scene.clampToHeightMostDetailed([position], opts.objectsToExclude, 0.2).then(function (clampedPositions) { var clampedPt = clampedPositions[0]; if (Cesium.defined(clampedPt)) { var cartiles = Cesium.Cartographic.fromCartesian(clampedPt); var heightTiles = cartiles.height; if (Cesium.defined(heightTiles) && heightTiles > -1000) { if (callback) callback(heightTiles, cartiles); return; } } //说明没在模型上,继续求地形上的高度 getSurfaceTerrainHeight(scene, position, opts); }); } else { //取贴模型高度 var heightTiles = scene.sampleHeight(carto, opts.objectsToExclude, 0.2); if (Cesium.defined(heightTiles) && heightTiles > -1000) { if (callback) callback(heightTiles, carto); return heightTiles; } } return 0; //表示取值失败 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-12-08 arcgis sql 字符串替换
2020-12-08 ArcGIS矢量转栅格再发布切片服务,还是直接发布切片服务?有何区别?
2020-12-08 cad转arcgis属性怎么看?
2020-12-08 打开或引用的图形包含由不可用的ObjectARX应用程序创建的自定义对象
2019-12-08 Single-shot Object Detection
2018-12-08 基于倾斜影像的城市三维场景重建
2016-12-08 Robot Perception for Indoor Navigation《室内导航中的机器人感知》