我在in沙堡中有地形视图,我已经加载了GeoJSON格式的道路数据,它们是线。我想在地形上夹住它们,就像这个例子(在下拉菜单中选择“采样线位置和绘制与深度测试禁用”) -> http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Ground%20Clamping.html&label=Tutorials在这个例子中,你看到的线是在代码中定义的,但我在我的PC上有数据(道路),这是在应用程序中加载的。当加载时,道路是平坦的(在地形下),我必须以某种方式将它们夹在地形上,但不知道如何操作。
我尝试使用示例中的现有代码,但没有成功。
这是我现在的代码:
//Add terrain
var viewer = new Cesium.Viewer('cesiumContainer');
var cesiumTerrainProviderMeshes = new Cesium.CesiumTerrainProvider({
url : 'https://assets.agi.com/stk-terrain/v1/tilesets/world/tiles',
requestWaterMask : true,
requestVertexNormals : true
});
viewer.terrainProvider = cesiumTerrainProviderMeshes;
viewer.scene.globe.depthTestAgainstTerrain = true;
//Load data (roads)
var dataSource = Cesium.GeoJsonDataSource.load('../../SampleData/ceste_rab_okvir.geojson');
viewer.dataSources.add(dataSource);
viewer.zoomTo(dataSource);
我知道有Cesium.GeoJsonDataSource.clampToGround,但由于我不是开发人员,我不知道如何在我的代码中编写它。有人知道怎么做吗?或者,也许有另一种方法可以将道路限制在地形上?
提前谢谢。
发布于 2017-07-13 07:08:37
我已经弄明白了。它应该写成这样:
//Add terrain
var viewer = new Cesium.Viewer('cesiumContainer');
var cesiumTerrainProviderMeshes = new Cesium.CesiumTerrainProvider({
url : 'https://assets.agi.com/stk-terrain/v1/tilesets/world/tiles',
requestWaterMask : true,
requestVertexNormals : true
});
viewer.terrainProvider = cesiumTerrainProviderMeshes;
viewer.scene.globe.depthTestAgainstTerrain = true;
//Load data (roads)
Cesium.GeoJsonDataSource.clampToGround = true;
var dataSource = Cesium.GeoJsonDataSource.load('../../SampleData/ceste_rab_okvir.geojson');
viewer.dataSources.add(dataSource);
viewer.zoomTo(dataSource);
https://stackoverflow.com/questions/45061840
复制