(1)code in App.js:
var vehicleroute = Cesium.CzmlDataSource.load('./Source/SampleData/CZMLfromSUMO_singleVeh.czml');
var vehicle;
var compositeOri = new Cesium.CompositeProperty();
vehicleroute.then(function (dataSource) {
viewer.dataSources.add(dataSource);
vehicle = dataSource.entities.getById('Point');
vehicle.model = {
uri: './Source/SampleData/Models/CesiumMilkTruck.gltf',
minimumPixelSize: 12,
maximumScale: 1000,
silhouetteColor: Cesium.Color.WHITE,
};
var movingOri = new Cesium.VelocityOrientationProperty(vehicle.position);
var stopOri = new Cesium.ConstantProperty(movingOri.getValue(Cesium.JulianDate.fromIso8601('2019-05-08T00:00:39Z')));
compositeOri.intervals.addInterval(Cesium.TimeInterval.fromIso8601({
iso8601 : '2019-05-08T00:00:00Z/2019-05-08T00:00:39Z',
data : movingOri
}));
compositeOri.intervals.addInterval(Cesium.TimeInterval.fromIso8601({
iso8601 : '2019-05-08T00:00:40Z/2019-05-08T00:01:25Z',
data : stopOri
}));
compositeOri.intervals.addInterval(Cesium.TimeInterval.fromIso8601({
iso8601 : '2019-05-08T00:01:26Z/2019-05-08T00:01:40Z',
data : movingOri
}));
vehicle.orientation = compositeOri;
vehicle.position.setInterpolationOptions({
interpolationDegree : 3,
interpolationAlgorithm : Cesium.HermitePolynomialApproximation
});
});
(2)position in CZML:
"position":[
{
"interval":"2019-05-08T00:00:00Z/2019-05-08T00:00:39Z",
"epoch":"2019-05-08T00:00:00Z",
"cartographicDegrees":[
0,
11.433648,
48.764329,
10,
1.0,
11.433471,
48.764285,
10,
......
39.0,
11.429106,
48.762382,
10
]
},
{
"interval":"2019-05-08T00:00:40Z/2019-05-08T00:01:25Z",
"epoch":"2019-05-08T00:00:00Z",
"cartographicDegrees":[
11.429103,
48.762381,
10
]
},
{
"interval":"2019-05-08T00:01:26Z/2019-05-08T00:01:40Z",
"epoch":"2019-05-08T00:00:00Z",
"cartographicDegrees":[
86.0,
11.429095,
48.762376,
10,
...
100.0,
11.429375,
48.7625,
10
]
}
],
var stopOri = new Cesium.ConstantProperty(movingOri.getValue(timepoint));
vehicleroute.then(function(dataSource) {
// .. code
}).otherwise(function(error) {
console.log(error)
});
window.vehicle = vehicle;
window.viewer = viewer;
vehicle.position.getValue(viewer.clock.currentTime)
1.position of CZML
"position":[
{
"interval":"2019-05-08T00:00:00Z/2019-05-08T00:00:40Z",
"epoch":"2019-05-08T00:00:00Z",
"cartographicDegrees":[
0,
11.433648,
48.764329,
10,
......
39.0,
11.429106,
48.762382,
10,
40,
11.429103,
48.762381,
10
]
},
{
"interval":"2019-05-08T00:00:40Z/2019-05-08T00:01:26Z",
"epoch":"2019-05-08T00:00:00Z",
"cartographicDegrees":[
11.429103,
48.762381,
10
]
},
{
"interval":"2019-05-08T00:01:26Z/2019-05-08T00:01:40Z",
"epoch":"2019-05-08T00:00:00Z",
"cartographicDegrees":[
86.0,
11.429095,
48.762376,
10,
......
100.0,
11.429375,
48.7625,
10
]
}
],