Here, i am using the below code for 3D map. And this creates semi ellipsoid below the ground surface in case of terrain area.
var viewer = new Cesium.Viewer("cesiumContainer", {
terrainProvider: Cesium.createWorldTerrain(),
});
viewer.scene.globe.depthTestAgainstTerrain = true;
viewer.scene.screenSpaceCameraController.enableCollisionDetection = false;
var radiusX = 720;
var radiusY = 720;
var radiusZ = 600; // radius in the up direction
var entityPosition = Cesium.Cartesian3.fromDegrees(82.88827, 39.50256, 0 );
viewer.scene.primitives.add(new Cesium.DebugModelMatrixPrimitive({
modelMatrix : Cesium.Transforms.eastNorthUpToFixedFrame(entityPosition),
length : radiusZ,
width : 1.0
}));
var entiti_ellipsoid = viewer.entities.add({
position: entityPosition,
ellipsoid: {
radii: new Cesium.Cartesian3(radiusX, radiusY, radiusZ),
maximumCone: Cesium.Math.PI_OVER_TWO,
material: Cesium.Color.fromRandom({ alpha: 0.5 }),
//clampToGround: true,
// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
},
});
viewer.zoomTo(entiti_ellipsoid);
var viewer = new Cesium.Viewer("cesiumContainer", {
terrainProvider: Cesium.createWorldTerrain(),
});
viewer.scene.globe.depthTestAgainstTerrain = true;
viewer.scene.screenSpaceCameraController.enableCollisionDetection = false;
var longitude = 82.88827;
var latitude = 39.50256;
var radiusX = 720;
var radiusY = 720;
var radiusZ = 600; // radius in the up direction
viewer.camera.flyToBoundingSphere(new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(longitude, latitude, 1000), radiusZ * 2));
var drawn = false;
viewer.scene.globe.tileLoadProgressEvent.addEventListener(function (queuedTileCount) {
if (drawn)
return;
console.log(queuedTileCount);
console.log(viewer.scene.globe.tilesLoaded);
if (viewer.scene.globe.tilesLoaded) {
var height = viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(longitude, latitude));
console.log(height);
var entityPosition = Cesium.Cartesian3.fromDegrees(longitude, latitude, height);
viewer.scene.primitives.add(new Cesium.DebugModelMatrixPrimitive({
modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(entityPosition),
length: radiusZ,
width: 1.0
}));
var entiti_ellipsoid = viewer.entities.add({
position: entityPosition,
ellipsoid: {
radii: new Cesium.Cartesian3(radiusX, radiusY, radiusZ),
maximumCone: Cesium.Math.PI_OVER_TWO,
material: Cesium.Color.fromRandom({alpha: 0.5}),
//clampToGround: true,
// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
},
});
drawn = true;
}
});