我正在使用 Angular CLI 構建傳單地圖。
目標是選擇帶有復選框的圖層以在地圖中顯示它們,因為 HTML 部分正在顯示:
<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>
當我選擇“Layer1”時,復選框被選中并運行testCheck($event).
正如 Typescript 部分所示,我添加了幾行代碼來在地圖上顯示圖層:
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 層在地圖上顯示得很好,這里沒有問題(請參閱releves.addTo(this.mymap))。但是我有兩個無法解決的問題:
- 當我取消選中“第 1 層”(意味著
event.target.name不在else 條件部分true)時,在我使用該方法時不會洗掉該層。removeLayer - 該
hasLayer方法似乎不起作用。實際上,在顯示第 1 層之后,當我取消選中并測驗該層是否存在時,我應該"has layer 1"在洗掉之前收到 console.log 訊息。但是什么都沒有...
你知道如何除錯嗎?
任何幫助將不勝感激,謝謝
uj5u.com熱心網友回復:
releves每次testCheck呼叫該方法時,您都會創建一個全新的層,因此hasLayer(releves)將始終如此false。
將您的層存盤在“永久”狀態,通常作為 Angular 組件的成員,就像您為mymap:
@Component({})
export class MyComponent {
releves = L.tileLayer.wms();
testCheck(event) {
if (this.mymap.hasLayer(this.releves)) {
// etc.
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457694.html
標籤:javascript 有角度的 打字稿 if 语句 传单
上一篇:while回圈和if陳述句的問題
