var viewer = new Cesium.Viewer('cesiumContainer', {
navigationInstructionsInitiallyVisible: false
});
// Set up a limited range of time for this demo.
var time = Cesium.JulianDate.fromIso8601('2016-04-08T12:00:00Z');
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
viewer.clock.startTime = time;
viewer.clock.currentTime = time;
viewer.clock.stopTime = Cesium.JulianDate.addSeconds(time, 20, new Cesium.JulianDate());
viewer.clock.multiplier = 1;
viewer.timeline.updateFromClock();
viewer.timeline.zoomTo(time, viewer.clock.stopTime);
// Construct a TimeIntervalCollection showing the changes to the hierarchy over time.
var hierarchy = new Cesium.TimeIntervalCollectionProperty();
for (var i = 0; i < 40; ++i) {
var nextTime = Cesium.JulianDate.addSeconds(time, 0.5, new Cesium.JulianDate());
// Inside the loop, per iteration we add one window of time for this polygon.
hierarchy.intervals.addInterval(new Cesium.TimeInterval({
start: time,
stop: nextTime,
isStartIncluded : true,
isStopIncluded : false,
data : Cesium.Cartesian3.fromDegreesArrayHeights([-108.0+i/4, 35.0, 100000,
-100.0+i/4, 35.0, 100000,
-100.0+i/4, 40.0, 100000,
-108.0+i/4, 40.0, 100000])
}));
time = nextTime;
}
// Create the polygon, using the animated hierarchy.
var orangePolygon = viewer.entities.add({
name : 'Orange polygon with time-varying position',
polygon : {
hierarchy : hierarchy,
extrudedHeight: 0,
perPositionHeight : true,
material : Cesium.Color.ORANGE.withAlpha(0.5),
outline : true,
outlineColor : Cesium.Color.WHITE
}
});
viewer.zoomTo(viewer.entities);
html, body, #cesiumContainer {
width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
font-family: sans-serif;
}
<link href="http://cesiumjs.org/releases/1.19/Build/Cesium/Widgets/widgets.css"
rel="stylesheet"/>
<script src="http://cesiumjs.org/releases/1.19/Build/Cesium/Cesium.js">
</script>
<div id="cesiumContainer"></div>
Vielen Dank! Aufgrund Ihrer Antwort kann ich kein Polygon sehen, das sich sanft über eine Region bewegt, es sei denn, ich mache meine Zeitschritte zu klein, denke ich. – azar
Ich habe zwei Kommentare: 1. Gibt es eine Methode (oder vielleicht eine Liste), die den Typ einer Eigenschaft zurückgibt, wenn sie interpolieren könnte. 2. Ich sah ein Beispiel für das Verschieben eines Polygons, indem ich Referenzen auf die Position seiner Endpunkte in ** CZML ** benutzte, die sich reibungslos bewegten, ich konnte es jedoch nicht in _javascript_ arbeiten lassen. Ist es nur in ** CZML ** verfügbar? – azar
1. Für SampledProperty ist es ['SampledProperty.type'] (https://cesiumjs.org/Cesium/Build/Documentation/SampledProperty.html#type). Es gibt keinen entsprechenden Typ einer TimeIntervalCollection, da jedes Intervall möglicherweise einen anderen Datentyp darstellt. 2. Kannst du die CZML oder einen Link zu CZML posten? Generell können Sie alles, was Sie in CZML tun können, über Entity API tun. – emackey