我想在使用Openlayers3时从图层中删除要素。我知道在创建功能时我们可以feature.setId(id)
并使用feature.getId()
来删除它们。但是,如果从数据库或地理服务器加载功能,则它们没有正确的“ID”属性。
这是一种在不设置功能ID的情况下删除所选功能的方法吗?
答案 0 :(得分:1)
您必须更清楚地提出问题。 是否要从数据库中删除这些功能,或者只是想从客户端删除这些功能,并且不对DB执行任何操作?????
如果你没有id,我猜应该有一些相同的功能属性。我的意思是如果你执行了一个sql删除脚本,你不会使用一个标识符来删除它们吗?
所以我按下你的功能有一个主键或相同的东西来区分它们。
因此,假设您的胎儿有一个名为“MYPK”的相同列。如果是这样,您可以迭代通过功能并绘制相同的属性
var pksToDelete = new Array();
for (var i=0;i<features.length;i++){
pksToDelete.push(features[i].get('MYPK'));
}
现在,您将所有功能的唯一ID放入数组中。 如果要从DB中删除它们,请使用这些ID获取wfs-t请求,然后刷新您的图层。
更好地提供您使用的示例代码并详细说明您的目的,以便我可以为您提供详细的帮助。