Как правильно удалить все функции из FeatureLayer?


10

У меня есть, featureLayerи я не хочу убивать его и создавать еще один. Я хочу удалить все функции из текущего FeatureLayer. Я обнаружил, что могу использовать applyEditsметод, но для его использования мне нужны все функции, которые я хочу удалить. Пока я не хочу хранить их отдельно. Знаете ли вы лучший способ очистить мой FeatureLayer при использовании ArcGIS Javascript API?

Ответы:


3

Используйте featureLayer.selectFeatures () с предложением Кирка, предложением where, которое вернет все ваши функции. Как только у вас появятся все ваши функции, передайте их в applyEdits () при удалении.


Не вернет ли это много возможностей клиенту? Если это большой набор данных, он может быть медленным.
Кирк Куйкендалл

2
Единственная проблема в том, что я не могу указать правильное предложение where - я пробовал «1 = 1», «OBJECTID> 0» и т. Д. Но каждый раз, когда у меня возникает ошибка «FeatureLayer :: selectFeatures - запрос содержит один или несколько неподдерживаемых параметров ». Код var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (query, ...);
Кирилл Лыков

Возможно, если Featurelayer не связан с каким-либо сервисом объектов, он не поддерживает предложения where. Что вы думаете?
Кирилл Лыков

«Если векторный слой не связан с каким-либо сервисом объектов, он не поддерживает предложения where» - это правильно, но если это так, он также не поддерживает редактирование. Из справки по API: «Если нижележащий слой ... взят из Сервиса объектов, его функции можно редактировать», подразумевая, что ваш FeatureLayer подключен к сервису объектов
Стивен Лид,

«Это также не поддержит редактирование» - я поддерживаю редактирование, даже если оно не связано со службой. Но мне пришлось сделать несколько обходных путей.
Кирилл Лыков


1

Если вы создали векторный слой на стороне клиента (без 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]);
            }
        });
    });
}


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.