首页 / 浏览问题 / 三维GIS / 问题详情
分层分户示例里面可以绘制多个包围模型的对象吗
6EXP 2022年04月02日
还有cesium原生的ClassificationPrimitive在超图项目里面不起作用

1个回答

您好,多个包围模型的对象是什么意思呢。示例中是点击时对应的去获取一个贴在S3M图层模型表面的包围面(投影面)。您点击一个的同时去绘制多个不太符合逻辑。实在非要绘制多个也可以,需要您这边获取每一个绘制的包围面的定位点。示例中是获取的点击三维图层时的点。

至于您说的 ClassificationPrimitive 不起作用,应该是版本问题,我们的WebGL版本和Cesium官方正式版本有差距,ClassificationPrimitive 方法应该还没有更新。
4,151EXP 2022年04月02日

Cesium.GroundPrimitive.bottomAltitude = bottomHeight; // 矢量面贴对象的底部高程
Cesium.GroundPrimitive.extrudeHeight = extrudeHeight; // 矢量面贴对象的拉伸高度

示例中设定了这两个值,如果想绘制多个包围面,它们的高度不一样呢

就是下面这样

您好,这个的话,因为一个对象的常规使用高程就是底部高程和拉伸高程。没法通过这个方法去设置。具体的话您可以查看接口 GroundPrimitive http://cesium.xin/cesium/cn/Documentation1.62/GroundPrimitive.html?classFilter=GroundPrimitive

GroundPrimitive 不行,ClassificationPrimitive 不能用,那想实现上面图片里面的效果,还有其他办法么
您好,我的意思是,您根据示例

var bottomHeight = Number(selectedFeature.fieldValues[selectedFeature.fieldNames.indexOf('BOTTOM')]); // 底部高程
            var extrudeHeight = Number(selectedFeature.fieldValues[selectedFeature.fieldNames.indexOf('LSG')]); // 层高(拉伸高度)

可以看出,这两个高度都是去获取的,所以您也可以通过其他途径去获取高度来设置,只是示例中这两个高度的获取方法,没法再通过同样的方法去获取了。。

举个例子,您可以做一个连续点击需要设置的面的操作,鼠标右键结束点击,每次点击后,记录点击点的高度,然后统一覆盖包围面
谢谢,了解了

您好,另外一种方案,就是在桌面做一个单体化的模型数据,切完缓存加载到场景中先隐藏,然后前端发布数据服务和三维服务,SQL查询让这些ID图元组过滤显示

...