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;
});
});
生成了一个由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;
});
});