I'm working on Angular CLI in which I've built a Leaflet Map.
The goal is to select layers with checkboxes to display them in the map as the HTML part is showing :
<div class="form-check">
<input class="form-check-input" type="checkbox" (change)="testCheck($event)" name="releves">
<label class="form-check-label">Layer 1</label>
</div>
当我 Select "Layer1"时,复选框被选中,这将运行testCheck($event)
.
在Typescript部分显示时,我添加了几行代码以在 map 上显示图层:
testCheck(event: any){
if (event.target.name == 'releves'){
var releves = L.tileLayer.wms('https://URL_TO_THE_WMS', {layers: 'myLayer',format: 'image/png',transparent:true});
if (event.target.checked === true){
if (! this.mymap.hasLayer(releves)) {
releves.addTo(this.mymap);
}
else if (this.mymap.hasLayer(releves)) {
// do nothing
}
let i = 0;
this.mymap.eachLayer(function(){ i += 1; });
console.log('Map has', i, 'layers.');
}
else {
if (this.mymap.hasLayer(releves)) {
console.log ("has layer 1");
this.mymap.removeLayer(releves);
}
}
}
}
图层1在 map 上显示得很好,这里没有问题(参见releves.addTo(this.mymap)
).但我有两个问题无法解决:
- 当我取消选中"Layer 1"(表示else condition part中的
event.target.name
不是true
)时,该层不会被删除,而我使用的是removeLayer
方法. -
hasLayer
法似乎不起作用.事实上,在显示了第1层之后,当我取消选中并测试该层是否存在时,我应该得到控制台.删除前记录消息"has layer 1"
.但什么都没有...
May you know how to debug that ?
Any help would be very appreciated, thanks