全部移除
这个没什么好说的,直接用就行
viewer.dataSources.removeAll();
单个移除
进行单个移除的时候,我遇到了麻烦,我将promise
里面的datasource
保存后,用保存下来的datasource
进行删除,我发现无法 viewer.dataSources.remove(datasource)
无法移除。
这里是错误示例
// 全局保存 geojson 的 dataSource
var geoDataSource = null;
let geoPromise = Cesium.GeoJsonDataSource.load("geojson地址");
geoPromise.then((dataSource) => {
// 将 dataSource 在全局保存下来用于删除
geoDataSource = viewer.dataSources.add(dataSource);
// 视角切换到geojson
viewer.flyTo(dataSource.entities.values)
})
// 这里用全局保存的 geoDataSource 删除无效。
viewer.dataSources.remove(geoDataSource);
解决方案
给定义好的 geojson
赋一个 name
,然后通过 getByName
获取 dataSource
用于删除。
注意: 这里给 geojson
的 name
赋值,一定要是唯一的,要不然删除就会有删错的情况。
示例
let geoPromise = Cesium.GeoJsonDataSource.load(
"geojson地址",
{
stroke: Cesium.Color.WHITE, // 边框颜色
strokeWidth: 3, // 边框宽度
});
geoPromise.then((dataSource) => {
// 添加 geojson
viewer.dataSources.add(dataSource);
// 给定义好的 geojson 的 name 赋值(这里的 dataSource 就是定义好的geojson)
dataSource.name = "geojson_map";
// 视角跳转到 geojson
viewer.flyTo(dataSource.entities.values)
})
// 这里是删除语句(通过 getByName 获取 dataSources,用于删除)。
viewer.dataSources.remove(viewer.dataSources.getByName('geojson_map')[0])
删除前
删除后