首页 / 浏览问题 / 三维GIS / 问题详情
webgl删除datasouces里的datasource
34EXP 2018年08月31日
angular.min.js:101 Error: id is required.
Error
    at new t (eval at <anonymous> (Cesium.js:25), <anonymous>:1:3391)
    at v.getById (eval at <anonymous> (Cesium.js:25), <anonymous>:1:1331390)
    at ae._dataSourceRemoved (eval at <anonymous> (Cesium.js:25), <anonymous>:1:3941067)
    at i.raiseEvent (eval at <anonymous> (Cesium.js:25), <anonymous>:1:422126)
    at s.remove (eval at <anonymous> (Cesium.js:25), <anonymous>:1:1573762)
    at removeLineResult (HomePageCtrl.js:1545)
    at k.$scope.clearAll (HomePageCtrl.js:815)

代码如下:
var dataSources = viewer.dataSources;
for (var i = 0; i < viewer.dataSources.length; i++) {
    if (viewer.dataSources.get(i).name.indexOf("dz")!= -1) {
        viewer.dataSources.remove(viewer.dataSources.get(i));
        i--;
    }
}

3 个回答

您好,remove(dataSource, destroy) ,移除并销毁试试

另外看看viewer.dataSources.get(i)获取到数据源没有
5,985EXP 2018年08月31日
你好,我试了一下,destroy为true还是不行,viewer.datasources.get(i)是可以获取到datasource的

我测试了一下,没问题,你自己检查你的循环有没有问题,存不存在越界等问题

附上我的测试代码:


	var viewer=null;
   function onload(Cesium) {
    viewer = new Cesium.Viewer('cesiumContainer', {
    sceneMode : Cesium.SceneMode.SCENE2D,
    timeline : false,
    animation : false
});

var dataSource = Cesium.GeoJsonDataSource.load('./data/simplestyles.geojson');
viewer.dataSources.add(dataSource);
console.log(viewer.dataSources);
viewer.zoomTo(dataSource);
console.log(viewer.dataSources);
}
$('#toolbar').show();
$('#loadingbar').remove();
$('#addgltf').click(function(){
    viewer.dataSources.remove(viewer.dataSources.get(0));
}) 

我也遇到了,请问你解决该问题了吗
5EXP 2019年12月04日
viewer.dataSources.remove(viewer.dataSources.get(i),false);

remove第二个参数传个false

5EXP 2020年04月13日
...