图层显隐控制出现bug

0 投票

构建了ztree图层控制树,绑定了click事件。每次都是获取所有勾选的节点的name,然后通过

var layer1 = scene.layers.find(name);
		if (layer1) {// 图层加载过
			if (layer1.visible == false && isShow)// 当前不显示且需要显示
				layer1.visible = true;
			else if (layer1.visible == true && !isShow)// 当前显示且需要不显示
				layer1.visible = false;
}

控制其显示隐藏。但是在我多次操作后(常规操作,同一图层勾选、取消、勾选、取消·····),报出如下错误

哪里有bug呢?该如何解决

6月 26, 2018 分类:  482次浏览 | 用户: 72degrees 牛刀小试 (141 分)

1个回答

0 投票

您好,看看该范例有无问题http://support.supermap.com.cn:8090/webgl/examples/editor.html#S3MTiles_BIM

没问题的话可参考他这个写。

6月 27, 2018 用户: 胡林 登峰造极 (5,985 分)
您推荐的范例是三维数据集列表只有一个数据集,在数据集下有多个数据层。每个数据层的显隐控制是通过获取每个数据层所有对象的id,设置对象的显隐layer.setOnlyObjsVisible(ids,false)来控制的,然后总数据集的显隐控制用的也是layer.visible = true;这里是在数据集列表就有多个数据集,不同的数据集加载到图层控制显隐。也就是用到layer.visible=true 或者false。我使用用到的跟这没有差别,不过是在构建目录树的时候我用到的ztree,这里用的bootstrap treeview插件。

依然还存在着这个bug

正如你所说该范例也可以直接控制整个图层的显隐,如下图

但是反复操作后,并没有此问题。

如果是第三方框架原因导致的,我这边也没办法帮你解决,当然你如果写一个能重现问题的小demo给我,我这边重现后可以上报缺陷交研发处理,看能否找到原因。

当然你的程序和示例程序还有个不同点就是数据不同,建议你可以试试用范例中的数据,看看有无此问题。

重现问题的demo有点耗时,因为好几个功能糅合到一起了,图层控制还控制透明度等等。

这里我还想问一下,把一个功能写成一个js类怎么写,跟模具组装一样,到时候用就直接拿来用多好。laugh

...