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?

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.


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.


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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.