Cesium 使用 KML 数据移动 3D 模型

Cesium move 3D model with KML data

生成了一个由cesium 显示的KML 文件。 KML 由坐标和高度(甚至航向等)组成。曲目显示得很好。现在我想通过遵循这条线(带标题)的 3D 模型显示当前使用的点 (http://maps.google.com/mapfiles/kml/paddle/ylw-circle.png)。 需要在 KML 中完成吗?

最佳答案取决于您是否能够修改 KML。

如果可以,那么最好的解决方案是将 glTF 3D 模型添加到 KML。它将为您节省一点点复杂性。

否则你需要做这样的事情(粘贴到 Sandcastle):

var viewer = new Cesium.Viewer('cesiumContainer', {
    terrainProviderViewModels : [], //Disable terrain changing
    infoBox : false, //Disable InfoBox widget
    selectionIndicator : false //Disable selection indicator
});

//Enable lighting based on sun/moon positions
viewer.scene.globe.enableLighting = true;

viewer.dataSources.add(Cesium.KmlDataSource.load('../../SampleData/kml/bikeRide.kml')).then(function(dataSource) {
    viewer.clock.shouldAnimate = false;

    //Create the entity after KML loaded
    var entity = viewer.entities.add({
        position: dataSource.entities.getById('tour').position,
        model: {
            uri: '../../SampleData/models/CesiumGround/Cesium_Ground.bgltf',
            minimumPixelSize: 64
        },

        path: {
            resolution : 1,
            material : new Cesium.PolylineGlowMaterialProperty({
                glowPower : 0.1,
                color : Cesium.Color.YELLOW
            }),
            width : 10
        }

    });
    viewer.flyTo(entity).then(function () {
        viewer.trackedEntity = entity;
        viewer.selectedEntity = viewer.trackedEntity;
        viewer.clock.multiplier = 15;
        viewer.clock.shouldAnimate = true;
    });
});