使用产品:iserver 11i 操作系统:win10x64 数据类型: postgre sql 问题详细描述:1、假设我使用一个复选框控制麻点图的显示和隐藏,checkbox选中时我的代码是:new L.supermap.TiledMapLayer(this.url,{transparent: true, noWrap: true}).addTo(this.map),那我取消选中时应该怎么隐藏麻点图呢? 问题重现步骤: 1.
每次选中或取消选择时,都会创建新的 L.supermap.TiledMapLayer 对象并赋值给 this.onelayer 或 this.twolayer,但是移除图层时却只尝试移除当前对象的引用。这就导致了取消第二层麻点图后无法正确移除第一层麻点图,并且无法取消两层麻点图。
L.supermap.TiledMapLayer
this.onelayer
this.twolayer
在修正后的代码中,每次选中或取消选择时,首先检查对应的图层对象是否已经存在,只有当不存在时才创建新的图层并添加到地图上。同时,在取消选择时,移除图层后将对应的图层变量设置为 null。
null
layerTools(val) { if (val.includes('first')) { if (this.onelayer == null) { this.onelayer = new L.supermap.TiledMapLayer(this.oneurl, { transparent: true, noWrap: true }).addTo(this.map); } } else { if (this.onelayer != null) { this.map.removeLayer(this.onelayer); this.onelayer = null; } } if (val.includes('second')) { if (this.twolayer == null) { this.twolayer = new L.supermap.TiledMapLayer(this.twourl, { transparent: true, noWrap: true }).addTo(this.map); } } else { if (this.twolayer != null) { this.map.removeLayer(this.twolayer); this.twolayer = null; } } } }