Cesium geojson覆盖模型/防止被模型遮挡(面线标记覆盖模型)

首先:开启深度检测 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里面的heightReferenceperPositionHeight参数就行

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
	}
});
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要将Cesium模型导出为GeoJSON格式,需要经过以下步骤: 1. 使用Cesium模型几何库获取模型的几何信息。例如,使用Cesium.Model.getMesh()获取模型的三角网格信息。 2. 将模型的几何信息转换为GeoJSON格式。GeoJSON是一种基于JSON的地理空间数据交换格式,它支持点、线、面等几何类型。将模型的几何信息转换为GeoJSON格式可以使用现有的JavaScript库,如Turf.js或geojson.js。 3. 将GeoJSON数据保存到文件中。可以使用JavaScript中的Blob对象将数据保存为文件,或使用服务器端代码将数据保存到文件中。 下面是一个示例代码,演示了如何将Cesium模型导出为GeoJSON格式: ```javascript var model = viewer.scene.primitives.get(0); var mesh = model.getMesh(); var coordinates = []; for (var i = 0; i < mesh.vertices.length; i += 3) { var x = mesh.vertices[i]; var y = mesh.vertices[i + 1]; var z = mesh.vertices[i + 2]; coordinates.push([x, y, z]); } var geojson = { type: 'Feature', geometry: { type: 'Polygon', coordinates: [coordinates] } }; var blob = new Blob([JSON.stringify(geojson)], {type: 'application/json'}); saveAs(blob, 'model.geojson'); ``` 在这个示例中,我们首先获取了场景中第一个模型的三角网格信息,然后将其转换为GeoJSON的多边形几何类型。最后将GeoJSON数据保存为名为“model.geojson”的文件。请注意,这个示例只是一个基本的示例,具体的实现可能会因为模型的复杂性和需求的不同而有所不同。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值