外观
设置贴地、贴模型操作
约 731 字大约 2 分钟
2024-09-11
如何设置贴地、贴模型
按需进行选择:
- 设置贴地参数 clampToGround 为 true,需查看对应 api,存在该参数才可以设置;
该版本及以上将同时支持贴模型和地形,HeightReference 单独控制;

点对象不支持贴模型,设置参数无效,需要单独计算高度值
该参数会影响效率,大数据或者军事标绘时不建议使用
计算高度值后,赋值坐标
在对应的矢量 Api 页面中,查看是否有 autoSurfaceHeight 方法,可直接调用;
例如 fixedRoute 对象;可在功能示例代码中全局搜索查看;

对 GraphiLayer 图层也可使用该方法,具体的可参考示例代码;
对于墙这类矢量,没有贴地参数,如何让下面贴地?
这类是需要通过计算,可查看 api求路线的贴地线坐标(插值), 具体用法可以查看示例行政区突出展示
贴模型时,如何让矢量排除部分模型不进行计算
- 对矢量设置 objectsToExclude 参数;
// graphic是加载的矢量;arrModel是被排除的模型
graphic.objectsToExclude = arrModel;- 在计算时设置 objectsToExclude 参数;

矢量设置 clampToGround 参数后,popup 弹出的位置有所偏差
popupOptions 中的参数,也需要同时设置贴地参数;
矢量设置 clampToGround 参数后,拾取与点击获取的对象不一致
cesium 本身问题,entity 贴地面对象存在拾取异常的问题。可换成 primitive 或 Combine 对象;
DivGraphic 矢量设置贴地后,感觉未贴地
DivGraphic 矢量不仅与坐标有关,与 css 样式也有关系; 可打开 testPoint 测试点,调整下 css
// 打开测试点,与DIV点进行对比位置调整css
descGraphic.testPoint = true;PathEntity 的线被模型挡住,autoSurfaceHeight 不生效
autoSurfaceHeight 依赖当前已经加载出来的地形或模型。地图刚创建就调用时,地形往往还没就绪,算出来的高度是错的。
可以先等地形:
await map.terrainPromise再按现有线坐标生成贴地线。如果线段仍然穿模,用 PolyUtil.computeSurfaceLine 做插值,按模型表面采样高程后再赋回坐标。
面或注记设置了 clampToGround,要挪一下地图才贴对
贴地高度按当前已经加载的地形计算,不是地形加载完成后自动重算。初始化时地形瓦片还没到,注记会挤在一起或漂移。
处理方式:
await map.terrainPromise之后再添加矢量。- 注记被地形裁切时,不要贴地,改用高度抬起来:
label: {
text: attr.name,
font_size: 16,
color: "#000",
clampToGround: false,
visibleDepth: true,
addHeight: 1000
}addHeight 按实际遮挡情况调整,过小会被地形截断。
