文章中所有操作均是在 Cesium 1.91 版本下进行的,其它版本差异请自行适配
KmlDataSource
KML (keyhole markup language)是一种基于 XML 语法格式的文件,用来描述和存储地理信息数据(点、线、面、多边形、多面体以及模型等),通常应用于 Google 地球相关软件中(Google Earth,Google Map 等),它跟 XML 文件最大的不同就是 KML 描述的是地理信息数据,KML文件有两个文件扩展名:.KML 和 .KMZ(KMZ是一个或几个 KML 文件的压缩集,采用 zip 格式压缩)。Cesium 从1.7 版开始就支持 KML,目前对 KML 的支持还不完整,但是支持大量的标准以及 Google 的gx扩展名称空间。有关支持哪些内容和不支持哪些内容的详细列表
这里找了几个官网的示例(注意官方的示例对应的 kml 文件目录下,还有几个图片也得需要用上),仅供参考。
KML
代码片段:
const viewer = new Cesium.Viewer("cesiumContainer");
var options = {
camera: viewer.scene.camera,
canvas: viewer.scene.canvas,
screenOverlayContainer: viewer.container,
};
//test.kml文件是官方示例中的文件
var dataSource = Cesium.KmlDataSource.load(
"./source/kml/test.kml",
options
);
viewer.dataSources.add(dataSource);
viewer.camera.flyHome(0);
test.kml 文件,是官方示例中文件路径:Cesium-1.91\Apps\SampleData\kml\facilities\facilities.kml。
效果如下:
KMZ
代码片段:
const viewer = new Cesium.Viewer("cesiumContainer");
var options = {
camera: viewer.scene.camera,
canvas: viewer.scene.canvas,
screenOverlayContainer: viewer.container,
};
//test.kmz文件是官方示例中的文件
var dataSource = Cesium.KmlDataSource.load(
"./source/kml/test.kmz",
options
);
viewer.dataSources.add(dataSource);
viewer.camera.flyHome(0);
test.kmz 文件,是官方示例中文件路径:Cesium-1.91\Apps\SampleData\kml\gdpPerCapita2008.kmz。
效果如下: