You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cesium.js设置clampToGround为false时Polyline被瓦片层遮挡问题求助

问题根因

  • 控制台警告属于Cesium的原生设计限制:zIndex 参数仅对 clampToGround: true 的贴地矢量生效,非贴地场景下设置该参数无意义,因此会触发警告提示。
  • 非贴地空间线被地形瓦片遮挡,是因为Cesium默认开启深度测试,当线的坐标深度与地形瓦片深度接近,或是渲染精度误差导致系统判定线在瓦片后方时,就会出现遮挡效果。

解决方案

根据你的使用场景可选择以下两种方案:

方案1:关闭线的深度测试(适合示意类、需要永远顶显的空间线)

给polyline新增disableDepthTestDistance参数,设置为正无穷即可让该线不受深度测试影响,永远显示在所有图层最前方,同时移除无效的zIndex参数避免警告。
修改后代码参考:

const polylineOptions = {
  mtype: 1,
  polyline: {
    clampToGround: false,
    material: {
      red: 0.9686274509803922,
      green: 0.8784313725490196,
      blue: 0.12549019607843137,
      alpha: 1
    },
    positions: [
      {
        x: 4587184.226708501,
        y: 263034.9288440118,
        z: 4408875.3130637
      },
      {
        x: 4587020.391536608,
        y: 263038.279352096,
        z: 4409044.42829542
      },
      {
        x: 4587020.391536608,
        y: 263038.279352096,
        z: 4409044.42829542
      }
    ],
    width: 3,
    // 新增参数:关闭深度测试,线永远显示在最上层
    disableDepthTestDistance: Number.POSITIVE_INFINITY
    // 已移除无效的zIndex参数
  }
}
this.viewer.entities.add(polylineOptions);

注意:该方案会让线穿透所有三维要素(地形、建筑物、白模等)始终显示,适合高亮标注类场景,不适合需要符合真实空间遮挡关系的场景。

方案2:坐标高度偏移(适合需要保留真实空间遮挡关系的场景)

如果不需要线永远顶显,仅要解决地形精度导致的误遮挡,只需给每个坐标点的z值增加1-5米的偏移量(可根据场景精度调整数值),让线的位置略高于地形瓦片,即可避免被遮挡,同时保留真实的深度遮挡效果。
修改后position示例:

positions: [
  {
    x: 4587184.226708501,
    y: 263034.9288440118,
    z: 4408875.3130637 + 2 // 增加2米高度偏移
  },
  {
    x: 4587020.391536608,
    y: 263038.279352096,
    z: 4409044.42829542 + 2 // 增加2米高度偏移
  },
  {
    x: 4587020.391536608,
    y: 263038.279352096,
    z: 4409044.42829542 + 2 // 增加2米高度偏移
  }
]

如果你的原始坐标是经纬度+高度格式,在转笛卡尔坐标前直接给高度值加偏移即可,比直接修改笛卡尔z值更准确。


内容的提问来源于stack exchange,提问作者muneebdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:57:04