Cesium中的 exportKml 函数为开发人员提供了一种将 Cesium 三维场景导出为 KML/KMZ 格式文件的方法。该函数允许用户在 Cesium 场景中定义的 Entity,将其转换为 KML/KMZ 格式文件中的 Placemark。
Cesium.exportKml({
entities: entities,
documentName: documentName,
name: name,
description: description,
version: version,
debugShowMissingProperties: debugShowMissingProperties,
tileset: tileset,
outputFile: outputFile
})
entities:类型为 Entity[],需要导出的实体数组,如果为空,则导出整个场景中的所有实体。documentName:类型为 String,生成的 KML 文件中的文档名,默认为 Cesium KML Document。name:类型为 String,生成的 KML 文件中的 Placemark 名称,默认为实体的名称。description:类型为 String,生成的 KML 文件中的 Placemark 描述信息,默认为实体的描述信息。version:类型为 String,生成的 KML 文件的版本,默认为 1.0。debugShowMissingProperties:类型为 Boolean,是否将实体缺少的属性作为 Placemark 的描述信息显示,默认为 false。tileset:类型为 Cesium3DTileset,需要导出 KML/KMZ 格式的离线三维模型。outputFile:类型为 String,生成的 KML/KMZ 文件保存路径。var viewer = new Cesium.Viewer('cesiumContainer');
var entities = viewer.entities.values;
Cesium.exportKml({
entities: entities,
documentName: 'My KML',
description: 'Exported from Cesium Viewer',
outputFile: 'my.kmz'
});
上述示例代码导出了整个场景中的所有实体,并保存为名为 my.kmz 的文件。如果仅需要导出场景中的部分实体,则可以通过将实体对象转换为数组进行选择:
var viewer = new Cesium.Viewer('cesiumContainer');
var entity1 = viewer.entities.add({
name : 'Entity1',
position : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
ellipse : {
semiMinorAxis : 250000.0,
semiMajorAxis : 400000.0,
height : 500000.0,
material : Cesium.Color.BLUE,
outline : true
}
});
var entity2 = viewer.entities.add({
name : 'Entity2',
position : Cesium.Cartesian3.fromDegrees(-80.0, 40.0),
description : 'Exported Entity',
point : {
color : Cesium.Color.YELLOWGREEN,
pixelSize : 20,
outlineColor : Cesium.Color.BLACK,
outlineWidth : 2
},
label : {
text : 'Exported Entity',
font : 'bold 24px Times',
horizontalOrigin : Cesium.HorizontalOrigin.LEFT,
pixelOffset : new Cesium.Cartesian2(10,0),
outlineWidth : 3,
}
});
Cesium.exportKml({
entities: [entity1, entity2],
documentName: 'My KML',
description: 'Exported from Cesium Viewer',
outputFile: 'my.kmz'
});
上述示例代码导出了两个实体对象,并保存为名为 my.kmz 的文件。在生成的 KML/KMZ 文件中,每个实体对象都会被转换为 Placemark 对象,并带有名称、描述、位置等详细信息。
在生成 KML/KMZ 文件时,请注意实体对象的属性是否支持 KML/KMZ 文件格式。例如,对于像 Box 之类的几何实体,KML/KMZ 文件不支持直接导出。如果需要在 KML/KMZ 文件中保存几何实体,请先将其转换为 Polygon 或 Polyline 等可导出的实体类型。