是一种无需设置功能 ID 即可删除功能的方法吗?

Is a way to remove features without setting feature id?

我想在使用 Openlayers3 时从图层中删除功能。我知道我们可以 feature.setId(id) 创建功能并使用 feature.getId() 删除它们。但是,如果这些要素是从数据库或地理服务器加载的,则它们没有正确的 'ID' 属性。

那么有没有一种方法可以在不设置功能 ID 的情况下删除所选功能?

你得把你的问题说清楚了。 您是要从数据库中删除这些功能,还是只想从客户端中删除它们而不对数据库采取进一步操作?????

如果你没有 id,我猜特征属性中应该有相同的东西。我的意思是,如果你执行了一个 sql 删除脚本,你不会使用标识符来删除它们吗????

所以我认为你的功能有一个主键或相同的东西来区分它们。

因此,假设您的特征有一个名为 "MYPK" 的相同列。如果是这样,您可以遍历功能并抓住这个相同的属性

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

现在您已将特征的所有唯一 ID 放入一个数组中。 如果您想从数据库中删除它们,请使用这些 ID 发出 wfs-t 请求,然后刷新您的图层。

最好提供一个你使用的示例代码,并详细说明你的用途,以便我详细帮助你。