[GIS] Remove terrainProvider from scene (ol3-cesium)

cesiumopenlayersterrain

I'm using ol3-cesium for creating 3D globe and cesium terrain provider to show terrain data on globe its working fine.

this.scene.terrainProvider = new Cesium.CesiumTerrainProvider({

url : "http://" + window.location.host + "/tilesets/world",

requestVertexNormals : true

});

But on click of a button i want to hide the terrain data or remove terrain provider from scene object, which ever is possible.

Best Answer

use the following function to toggle the terain

function toggleTerrain(){    
    var scene = ol3d.getCesiumScene();
    var terrainProvider;
    if (scene.terrainProvider._url){
        //add a simple terain so no terrain shall be preseneted
        terrainProvider = new Cesium.EllipsoidTerrainProvider({});
    }
    else {
        //enable the terain
        terrainProvider = new Cesium.CesiumTerrainProvider({
            url : '//cesiumjs.org/stk-terrain/tilesets/world/tiles',
            requestWaterMask: true
        });
    }
    scene.terrainProvider = terrainProvider;
}

your key snippet is

terrainProvider = new Cesium.EllipsoidTerrainProvider({});
scene.terrainProvider = terrainProvider;