DSDSWeb/static/js/Cesium-1.53/Apps/Sandcastle/gallery/Clamp to Terrain.html

268 lines
9.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta name="description" content="Clamp primitives to the terrain.">
<meta name="cesium-sandcastle-labels" content="Tutorials, Showcases">
<title>Cesium Demo</title>
<script type="text/javascript" src="../Sandcastle-header.js"></script>
<script type="text/javascript" src="../../../ThirdParty/requirejs-2.1.20/require.js"></script>
<script type="text/javascript">
require.config({
baseUrl : '../../../Source',
waitSeconds : 60
});
</script>
</head>
<body class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html">
<style>
@import url(../templates/bucket.css);
</style>
<div id="cesiumContainer" class="fullSize"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar">
<div id="terrainMenu"></div>
<div id="zoomButtons"></div>
<div id="toggleLighting"></div>
<div id="sampleButtons"></div>
</div>
<script id="cesium_sandcastle_script">
function startup(Cesium) {
'use strict';
//Sandcastle_Begin
var viewer = new Cesium.Viewer('cesiumContainer', {
terrainProvider: Cesium.createWorldTerrain()
});
viewer.scene.globe.depthTestAgainstTerrain = true;
Sandcastle.addDefaultToolbarMenu([{
//
// To clamp points or billboards set the heightReference to CLAMP_TO_GROUND or RELATIVE_TO_GROUND
//
text : 'Draw Point with Label',
onselect : function() {
var e = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-122.1958, 46.1915),
point : {
color : Cesium.Color.SKYBLUE,
pixelSize : 10,
outlineColor : Cesium.Color.YELLOW,
outlineWidth : 3,
heightReference : Cesium.HeightReference.CLAMP_TO_GROUND
},
label : {
text : 'Clamped to ground',
font : '14pt sans-serif',
heightReference : Cesium.HeightReference.CLAMP_TO_GROUND,
horizontalOrigin : Cesium.HorizontalOrigin.LEFT,
verticalOrigin : Cesium.VerticalOrigin.BASELINE,
fillColor : Cesium.Color.BLACK,
showBackground : true,
backgroundColor : new Cesium.Color(1, 1, 1, 0.7),
backgroundPadding : new Cesium.Cartesian2(8, 4),
disableDepthTestDistance : Number.POSITIVE_INFINITY // draws the label in front of terrain
}
});
viewer.trackedEntity = e;
}
}, {
text : 'Draw Billboard',
onselect : function() {
var e = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-122.1958, 46.1915),
billboard : {
image : '../images/facility.gif',
heightReference : Cesium.HeightReference.CLAMP_TO_GROUND
}
});
viewer.trackedEntity = e;
}
}, {
//
// Corridors, polygons and rectangles will be clamped automatically if they are filled with a constant color and
// has no height or extruded height.
// NOTE: Setting height to 0 will disable clamping.
//
text : 'Draw Corridor',
onselect : function() {
var e = viewer.entities.add({
corridor : {
positions : Cesium.Cartesian3.fromDegreesArray([
-122.19, 46.1914,
-122.21, 46.21,
-122.23, 46.21
]),
width : 2000.0,
material : Cesium.Color.GREEN.withAlpha(0.5)
}
});
viewer.zoomTo(e);
}
}, {
text : 'Draw Polygon',
onselect : function() {
var e = viewer.entities.add({
polygon : {
hierarchy : {
positions : [new Cesium.Cartesian3(-2358138.847340281, -3744072.459541374, 4581158.5714175375),
new Cesium.Cartesian3(-2357231.4925370603, -3745103.7886602185, 4580702.9757762635),
new Cesium.Cartesian3(-2355912.902205431, -3744249.029778454, 4582402.154378103),
new Cesium.Cartesian3(-2357208.0209552636, -3743553.4420488174, 4581961.863286629)]
},
material : Cesium.Color.BLUE.withAlpha(0.5)
}
});
viewer.zoomTo(e);
}
}, {
text : 'Draw Textured Polygon',
onselect : function() {
if (!Cesium.Entity.supportsMaterialsforEntitiesOnTerrain(viewer.scene)) {
window.alert('Terrain Entity materials are not supported on this platform');
return;
}
var e = viewer.entities.add({
polygon : {
hierarchy : {
positions : [new Cesium.Cartesian3(-2358138.847340281, -3744072.459541374, 4581158.5714175375),
new Cesium.Cartesian3(-2357231.4925370603, -3745103.7886602185, 4580702.9757762635),
new Cesium.Cartesian3(-2355912.902205431, -3744249.029778454, 4582402.154378103),
new Cesium.Cartesian3(-2357208.0209552636, -3743553.4420488174, 4581961.863286629)]
},
material : '../images/Cesium_Logo_Color.jpg',
classificationType : Cesium.ClassificationType.TERRAIN,
stRotation : Cesium.Math.toRadians(45)
}
});
viewer.zoomTo(e);
}
}, {
text : 'Draw Rectangle',
onselect : function() {
var e = viewer.entities.add({
rectangle : {
coordinates : Cesium.Rectangle.fromDegrees(-122.3, 46.0, -122.0, 46.3),
material : Cesium.Color.RED.withAlpha(0.5)
}
});
viewer.zoomTo(e);
}
}, {
text : 'Draw Model',
onselect : function() {
var e = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-122.1958, 46.1915),
model : {
uri : '../../SampleData/models/CesiumMan/Cesium_Man.glb',
heightReference : Cesium.HeightReference.CLAMP_TO_GROUND,
minimumPixelSize : 128,
maximumScale : 100
}
});
viewer.trackedEntity = e;
}
}, {
text : 'Sample line positions and draw with depth test disabled',
onselect : function() {
var length = 1000;
var startLon = Cesium.Math.toRadians(86.953793);
var endLon = Cesium.Math.toRadians(86.896497);
var lat = Cesium.Math.toRadians(27.988257);
var terrainSamplePositions = [];
for (var i = 0; i < length; ++i) {
var lon = Cesium.Math.lerp(endLon, startLon, i / (length - 1));
var position = new Cesium.Cartographic(lon, lat);
terrainSamplePositions.push(position);
}
Cesium.when(Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, terrainSamplePositions), function(samples) {
var offset = 10.0;
for (var i = 0; i < samples.length; ++i) {
samples[i].height += offset;
}
viewer.entities.add({
polyline : {
positions : Cesium.Ellipsoid.WGS84.cartographicArrayToCartesianArray(samples),
followSurface : false,
width : 5,
material : new Cesium.PolylineOutlineMaterialProperty({
color : Cesium.Color.ORANGE,
outlineWidth : 2,
outlineColor : Cesium.Color.BLACK
}),
depthFailMaterial : new Cesium.PolylineOutlineMaterialProperty({
color : Cesium.Color.RED,
outlineWidth : 2,
outlineColor : Cesium.Color.BLACK
})
}
});
var target = new Cesium.Cartesian3(300770.50872389384, 5634912.131394585, 2978152.2865545116);
offset = new Cesium.Cartesian3(6344.974098678562, -793.3419798081741, 2499.9508860763162);
viewer.camera.lookAt(target, offset);
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
});
}
}, {
text : 'Draw polyline on terrain',
onselect : function() {
if (!Cesium.Entity.supportsPolylinesOnTerrain(viewer.scene)) {
console.log('Polylines on terrain are not supported on this platform');
}
viewer.entities.add({
polyline : {
positions : Cesium.Cartesian3.fromDegreesArray([
86.953793, 27.928257,
86.953793, 27.988257,
86.896497, 27.988257
]),
clampToGround : true,
width : 5,
material : new Cesium.PolylineOutlineMaterialProperty({
color : Cesium.Color.ORANGE,
outlineWidth : 2,
outlineColor : Cesium.Color.BLACK
})
}
});
var target = new Cesium.Cartesian3(300770.50872389384, 5634912.131394585, 2978152.2865545116);
var offset = new Cesium.Cartesian3(6344.974098678562, -793.3419798081741, 2499.9508860763162);
viewer.camera.lookAt(target, offset);
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
}
}], 'zoomButtons');
Sandcastle.reset = function () {
viewer.entities.removeAll();
};
//Sandcastle_End
Sandcastle.finishedLoading();
}
if (typeof Cesium !== 'undefined') {
startup(Cesium);
} else if (typeof require === 'function') {
require(['Cesium'], startup);
}
</script>
</body>
</html>