首页 / 浏览问题 / 三维GIS / 问题详情
画线的时候怎么设置贴地贴对象
35EXP 2019年01月17日

您好, 画线的时候怎么设置贴地贴对象,我我设置了这个属性好像不起作用,clampToS3M : true

var line = viewer.entities.add({ 
		name:"line",
		polyline:{
			positions: Cesium.Cartesian3.fromDegreesArray(lonLatArr),
			width : 5,
	        material : Cesium.Color.RED,
	        clampToS3M : true 
		} 
		
	});
	viewer.zoomTo(line);

1个回答

2,701EXP 2019年01月17日
您好 那我设置线贴地的时候,一直报地形的错误,请问是什么原因
您好 能回复一下吗
线没有贴地属性,具体是什么错误

您好 我是找到了一段可以设置线贴地的代码,

var viewer = new Cesium.Viewer('cesiumContainer');
viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
    url : 'https://assets.agi.com/stk-terrain/world'
});
 
 
var ellipsoid = viewer.scene.globe.ellipsoid;
var positions = Cesium.Cartesian3.fromDegreesArray([
    -115, 35,
    -114, 36
]);
 
 
var flatPositions = Cesium.PolylinePipeline.generateArc({
    positions: positions,
    granularity: 0.000001
});
 
 
var cartographicArray = [];
for (var i = 0; i < flatPositions.length; i+=3) {
    var cartesian = Cesium.Cartesian3.unpack(flatPositions, i);
    cartographicArray.push(ellipsoid.cartesianToCartographic(cartesian));
}
Cesium.sampleTerrain(viewer.terrainProvider, 15, cartographicArray)
.then(function(raisedPositionsCartograhpic) {
    var raisedPositions = ellipsoid.cartographicArrayToCartesianArray(raisedPositionsCartograhpic);
    //console.log(raisedPositions)
    viewer.entities.add({
        polyline : {
            positions : raisedPositions,
            width : 5,
            material : Cesium.Color.RED
        }
    });
    viewer.zoomTo(viewer.entities);
});

然后加进去执行的时候一直报http://我的ip端口/iserver/services/3D---0--webGL-wyq/rest/realspace/datas/tc_sc/data/path/15/52638/22764.terrainz?v=1.16389.0

404,因为我对这块也不清楚,然后我同事说是地形的错误,但是他不知道如何解决,您能帮我看看嘛 谢谢

您好,您能看一下吗
我这边访问不到这个地形数据,并且在api也没查到Cesium.PolylinePipeline这个类这个是webgl中的方法吗

抱歉 实在不好意思才看见,上面那段实现线贴地的代码是我看之前有人问这个问题有答案 我就引用了一下 https://blog.csdn.net/u013929284/article/details/52653084  这是那个链接  您可以参考一下

他是根据线的节点,获取形应地形的高度,根据然后高度来绘制线的
哦哦 好的 谢谢您
...