首页 / 浏览问题 / 三维GIS / 问题详情
WebGl创建entity点如何贴地
22EXP 2018年06月01日
WebGl创建entity点如何贴地

1个回答

实体时设置heightReference:CLAMP_TO_GROUND
5,985EXP 2018年06月01日
什么意思,实体几乎都可以用这个接口贴地。
可以啊。

你好,我参考http://support.supermap.com.cn:8090/webgl/Build/Documentation/HeightReference.html这个里面的三个设置都试过了,都没有能够实现图标文字贴地效果,其中设置为 Cesium.HeightReference.NONE 图标文字倒是出现在正确的位置,但是有一半在地表里面没有贴地,另外的两个设置之后效果跟第二图差不多,都没有出现在地形上,请问是什么因素导致的

1.贴地效果也是让图标锚点贴地,锚点通常是在图片中心,所以会一半地上一半地下

2. billboard贴地示范代码

viewer.entities.add({
        position : Cesium.Cartesian3.fromDegrees(103.064734, 31.12816),
        billboard :{
            image : './images/省级.png',
            heightReference:Cesium.HeightReference.CLAMP_TO_GROUND
        }
    });

3.如果你不想一半地上一半地下,有两种方式(1)就用绝对高度,但是点或者布告板得有高程信息(2)使用viewer.scene.globe.depthTestAgainstTerrain = false;,这样实体就不会被地形遮挡,会靠近地面,但也不是完全贴地
绝对高度就是指  heightReference:Cesium.HeightReference.CLAMP_TO_GROUND这种方式吗?

另外我用viewer.scene.globe.depthTestAgainstTerrain = false;这个好像没有什么效果呢。还是一半地上一半地下

不是,你不做设置默认就是绝对高度

使用viewer.scene.globe.depthTestAgainstTerrain = false;效果如下图

首先保证webgl包是最新包,实现我上图效果参考代码:

    var viewer = new Cesium.Viewer('cesiumContainer',{
        //添加STK World Terrain地形服务
        terrainProvider : new Cesium.CesiumTerrainProvider({
            url : URL_CONFIG.STK,
            requestWaterMask : true,
            requestVertexNormals : true
        }),
        //添加BingMaps影像服务
        imageryProvider :  new Cesium.BingMapsImageryProvider({
            url : 'https://dev.virtualearth.net',
            mapStyle : Cesium.BingMapsStyle.AERIAL,
            key : URL_CONFIG.BING_MAP_KEY
        })
    });
    //设置相机视角
    viewer.entities.add({
        position : Cesium.Cartesian3.fromDegrees(103.064734, 31.12816),
        billboard :{
            image : './images/省级.png',
            heightReference:Cesium.HeightReference.CLAMP_TO_GROUND
        }
    });
    viewer.scene.globe.depthTestAgainstTerrain = false;
    viewer.scene.camera.setView({
        destination : new Cesium.Cartesian3.fromDegrees(103.064734,31.12816,8870.867706),
        orientation : {
            heading : 0.34555839949062594,
            pitch : -0.1422794351856307,
            roll : 0.0009471063581933947
        }
    });

...