我有一个featureLayer
,但我不想杀死它并创建另一个。我想从当前featureLayer中删除所有功能。我发现我可以使用applyEdits
方法,但是要使用它,我需要拥有要删除的所有功能。虽然我不想单独存储它们。您知道使用ArcGIS Javascript API时清空我的featureLayer的更好方法吗?
我有一个featureLayer
,但我不想杀死它并创建另一个。我想从当前featureLayer中删除所有功能。我发现我可以使用applyEdits
方法,但是要使用它,我需要拥有要删除的所有功能。虽然我不想单独存储它们。您知道使用ArcGIS Javascript API时清空我的featureLayer的更好方法吗?
Answers:
根据Kirk的建议,将featureLayer.selectFeatures()与where子句一起使用,该子句将返回所有特征。一旦拥有所有功能,就将它们作为删除传递给applyEdits()。
如果您在客户端(没有服务器端url)上创建了要素层,则不能将查询与where子句一起使用。通过搜索地图的范围,然后删除找到的所有项目,我可以解决此问题。例如:
function removeAllLayerFeatures(map, layer) {
require(['esri/tasks/query', 'esri/layers/FeatureLayer'], function (Query, FeatureLayer) {
var query = new Query();
query.geometry = map.extent;
layer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (results) {
for (var key in results) {
layer.remove(results[key]);
}
});
});
}
使用“ 更新光标”,选择所有功能(“ *”)。
使用IFeature.Delete()并在完成后进行存储。