1,根据元素的clampToGround属性贴地
var options = {
camera : viewer.scene.camera,
canvas : viewer.scene.canvas,
clampToGround: true //开启贴地
};
viewer.camera.flyHome(0);
var a = viewer.dataSources.add(Cesium.KmlDataSource.load('../data/kml/test_geojson_test.kml', options));
a.then( viewer.flyTo(a));
a.then(function(dataSource) {
var entities = dataSource.entities.values;
for (var i = 0; i < entities.length; i++) {
var entity = entities[i];
// 设置每个entity的样式
entity.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY; //去掉地形遮挡
entity.billboard.color = Cesium.Color.WHITE;
entity.billboard.image = '../data/kml/img.jpg';
}
});
2.根据Cesium.sampleTerrain方法计算该点地形高程,真正意义上的贴地
Cesium.sampleTerrain(
AppCesium.cesiumViewer.terrainProvider, CesiumConfig.terrain.pointHeightLevel,
Cesium.Cartographic.fromDegrees([108.038640320, 25.24820000])
).then(function (updatedCartographics) {
console.log(updatedCartographics);
for(var i=0;i<updatedCartographics.length;i++){
var cartographic = updatedCartographics[i];
entityArr[i].position = Cesium.Cartesian3.fromRadians(
cartographic.longitude,
cartographic.latitude,
cartographic.height
),
viewer.entities.add(entityArr[i])
}
viewer.zoomTo(viewer.entities);
});
Cesium.sampleTerrain方法的经纬度可是多个坐标组成的二维数组,返回相同组数的带高程的地理信息(经度,纬度,高程)