提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
cesium在没有开启地形时,加载geojson线数据没有问题,不会出现拖动地图,线数据也发生变化的现象,但在开启地形以后再加载地形数据,由于地形不平整,所以部分线数据就可能会被地形覆盖遮挡,看起来就会断断续续;还有可能拖动地图,线数据也会跟着移动,所以本文就记录一下,让线数据贴地的两种方法
一、Entity方式贴地
代码如下:
viewer.entities.add({
polyline: {
positions: Cesium.Cartesian3.fromDegreesArray(line),//line要加载的线数据
width: 10,//线宽
clampToGround: true,//开启贴地
material: Cesium.Color.RED//颜色
}
});
//或者直接加载线数据地址,然后设置贴地即可
var promise = Cesium.GeoJsonDataSource.load(urlLine, {
clampToGround: true,//开启贴地
});
二、primitive方式贴地
Primitive方式贴地, 需要使用GroundPolylinePrimitive和GroundPolylineGeometry来创建Primitive与Geometry对象,而不是使用Primitive和PolylineGeometry创建Primitive与Geometry对象,代码如下:
viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({
geometryInstances: new Cesium.GeometryInstance({
geometry: new Cesium.GroundPolylineGeometry({
positions: Cesium.Cartesian3.fromDegreesArray(positions[i]),
width: 15.0,//线宽
vertexFormat: Cesium.PolylineColorAppearance.VERTEX_FORMAT
}),
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(
new Cesium.Color.fromCssColorString("#0096ff")),
}
}),
appearance: new Cesium.PolylineColorAppearance({
translucent: false
})
}));
总结
Entity方式贴地更方便,但是效率不如primitive
版权声明:本文为zxl9669原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。