在Cesium地形图上导航会损坏图形位置

3
我将在我的GWT项目中使用cesium,并为地形使用cesium-terrain-server。(不是cesium-gwt,我正在使用jsni开发自己的代码) 我的问题是:我正在在地形上创建图形(多边形、折线),当我在地图上导航时,这些图形会从它们的位置移动。 有没有方法可以使它们固定在之前选择的点上? 示例代码如下:
    var polygon = new Cesium.PolygonGraphics({
                   fill : true;
                   material : Cesium.Color.BLUE.withAlpha(0.5),
                   outline : true,
                   hierarchy :{
                       positions: cartesian3s
                   }
                 })

然后我将多边形作为实体添加到Cesium Viewer的实体中。

你能展示一下在实体中添加多边形的代码吗? - Tomislav Muic
@Tomislav Muic 首先我创建了一个实体 var entity = new Cesium.Entity() 然后我将多边形设置给了这个实体 entity.polygon = polygon 最后我将它添加到我的查看器中 viewer.enties.add(entity) - hkn
1个回答

3
如果在带有地形的地图上导航时,图形似乎“移动”或滑动,那通常意味着所涉及的图形正在地形下面绘制(在WGS84椭球体本身上),并且透过地形显示。存在一种视觉错觉,眼睛无法理解自己正在通过山或地面本身看到某些远处的图形。只有当相机移动时,才会变得明显出现问题。如果要使图形保持静止,则它们必须以地形所在的正确海拔高度为基准。
能够在地形上覆盖多边形的功能已经在Cesium 1.3中添加,并在其他地方被提及。但是,目前看来这个功能还没有被添加到实体API中,因此你当前的选择是:(a)如果在平坦的地形上,请在点上采样高度并将多边形移动到该高度,或者(b)跳过实体API层并使用图形基元,特别是GroundPrimitive来呈现覆盖在地形上的多边形。

谢谢您的回答,实际上我尝试设置高度或挤出高度,但没有成功。我从我的cartesian3数组中获取高度值,该数组用于绘制多边形。 - hkn
尝试加载GeoJSON演示,并单击3D窗口顶部的“自定义样式”按钮,以获取工作的extrudedHeight示例。如果您仍然无法使其正常工作,请针对此特定主题提出新问题。谢谢! - emackey
1
实际上,sampleTerrain解决了我的问题,它不是将形状覆盖在地形上,而是防止形状在相机移动时移动。@emackey谢谢你的真实答案。 - hkn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接