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
等可导出的实体类型。