qual é a maneira correta de excluir todos os recursos do featureLayer

10

Eu tenho um featureLayere não quero matá-lo e criar outro. Quero excluir todos os recursos do featureLayer atual. Descobri que posso usar o applyEditsmétodo, mas para usá-lo, preciso ter todos os recursos que desejo excluir. Enquanto eu não quero armazená-los separadamente. Você conhece uma maneira melhor de esvaziar meu featureLayer ao usar a API Javascript do ArcGIS?

Kirill Lykov
fonte

Respostas:

3

Use featureLayer.selectFeatures () com, como Kirk sugeriu, uma cláusula where que retornará todos os seus recursos. Depois de ter todos os seus recursos, passe-os para applyEdits () como exclusões.

Derek Swingley
fonte
Isso não retornará muitos recursos ao cliente? Se este for um grande conjunto de dados, pode ser realmente lento.
21411 Kirk Kuykendall
2
O único problema é que não posso especificar a cláusula where where - tentei "1 = 1", "OBJECTID> 0" etc. etc. Mas sempre que tenho um erro "FeatureLayer :: selectFeatures - a consulta contém um ou mais parâmetros não suportados " O código var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (query, ...);
Kirill Lykov
Talvez, se o featurelayer não estiver conectado a nenhum serviço de recurso, ele não suporta cláusulas where. O que você acha?
Kirill Lykov
"se o featurelayer não estiver conectado a nenhum serviço de recurso, ele não suporta cláusulas where" - isso é correto, mas, se for o caso, também não suportará a edição. Da referência API: "Se a camada subjacente ... é de uma característica de serviço, suas características podem ser editados", o que implica que o seu featureLayer está ligado a um serviço de recurso
Stephen chumbo
"ele também não suporta edição" - eu suporte edição, mesmo que não esteja conectado ao serviço. No entanto, eu tive que fazer algumas soluções alternativas.
precisa saber é o seguinte
4

Tente fazer uma chamada de recursos de exclusão REST com uma cláusula where "1 = 1" ou algo semelhante.

Kirk Kuykendall
fonte
1
oi existe alguma sintaxe para a chamada de recursos de exclusão do REST? você poderia me dar um exemplo, enquanto estou tentando fazer isso
jonleech
1

Se você criou a camada de recursos no lado do cliente (sem URL do lado do servidor), não poderá usar uma consulta com uma cláusula where. Consegui solucionar isso pesquisando a extensão do mapa e excluindo todos os itens que encontrei. Por exemplo:

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]);
            }
        });
    });
}
Chris
fonte
0

Confira o método clear () :

Limpa todos os gráficos.

featureLayer.clear();
Leniel Maccaferri
fonte
-2

Use um Cursor de Atualização , selecionando todos os recursos ("*").

Use IFeature.Delete () e armazene quando terminar.

ujjwalesri
fonte
Esta pergunta está solicitando uma solução JavaScript, não ArcObjects.
Drek Swingley
Opa ... meu erro! Por favor ignore.
ujjwalesri