2016-01-04 88 views
1

我想在使用Openlayers3時從圖層中刪除特徵。我知道我們可以在feature.setId(id)創建功能時使用feature.getId()來刪除它們。但是,如果要從數據庫或地理服務器加載功能,則它們沒有適當的「ID」屬性。是否可以在不設置功能ID的情況下刪除功能?

所以是一種方法來刪除選定的功能,而無需設置功能ID?

回答

1

你必須讓你的問題更清楚。 你想從數據庫中刪除功能,或者你只是想從客戶端刪除它們,並且不會對數據庫採取進一步的行動?????

如果你沒有ID我猜應該有一些相同的功能屬性。我的意思是如果你執行一個sql刪除腳本不會使用標識符來刪除它們?

所以我按你的功能有一個主鍵或相同的東西來區分它們。

因此,讓我們假設你的設計有一個名爲「MYPK」的相同列。如果是這樣你可以遍歷throught功能和虎視眈眈這個相同的屬性

var pksToDelete = new Array(); 
for (var i=0;i<features.length;i++){ 
pksToDelete.push(features[i].get('MYPK')); 
} 

現在你有你的所有特徵的唯一ID到一個數組。 如果您想從數據庫中刪除它們,請使用這些ID發送wfs-t請求,然後對您的圖層進行刷新。

更好地提供您使用的示例代碼並詳細解釋您的目的,以便我可以爲您提供詳細的幫助。

相關問題