首先:开启深度检测 depthTestAgainstTerrain = true
注意:geojson覆盖模型的时候,使用outline是无效的,所以需要自己画个边线。
geojson覆盖模型
let resp = Cesium.GeoJsonDataSource.load("geogjson地址");
// 添加geojson到地球上
gvEarth.dataSources.add(resp);
// 获取geojson数据
resp.then((dataSource) => {
var entities = dataSource.entities.values;
// 设置面覆盖模型(如果不是geojson直接改polygon里面的heightReference和perPositionHeight参数就行)
entities.map(item => item.polygon.heightReference = Cesium.HeightReference.CLAMP_TO_GROUND);
entities.map(item => item.polygon.perPositionHeight = false);
// 注意:这里使用outline是无效的
// 线覆盖模型(不需要可以不添加)
for (key in entities) {
gvEarth.entities.add({
polyline: {
positions: entities[key].polygon.hierarchy._value.positions,
width: 3,
material: Cesium.Color.fromCssColorString("rgba(106, 250, 255, 1)"),
clampToGround: true, // 这个是线覆盖模型的关键
zIndex: 100, // 这个是层级,但是必须clampToGround: true
show: true
}
});
}
})
面标记覆盖模型
polygon
里面的heightReference
和perPositionHeight
参数就行
polygon: {
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
perPositionHeight: false
}
线标记覆盖模型
关键是 clampToGround: true
gvEarth.entities.add({
polyline: {
positions: entities[key].polygon.hierarchy._value.positions,
width: 3,
material: Cesium.Color.fromCssColorString("rgba(106, 250, 255, 1)"),
clampToGround: true, // 这个是线覆盖模型的关键
zIndex: 100, // 这个是层级,但是必须clampToGround: true
show: true
}
});