Как правильно удалить все функции из 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 подключен к сервису объектов
Стивен Лид,
«Это также не поддержит редактирование» - я поддерживаю редактирование, даже если оно не связано со службой. Но мне пришлось сделать несколько обходных путей.
Кирилл Лыков
4

Попробуйте сделать вызов функций удаления REST с предложением where "1 = 1" или чем-то подобным.

Кирк Куйкендалл
источник
1
Привет, есть ли синтаксис вызова функции удаления REST? не могли бы вы привести пример, когда я
пытаюсь
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]);
            }
        });
    });
}
Крис
источник
0

Проверьте метод clear () :

Очищает всю графику.

featureLayer.clear();
Лениэль Маккаферри
источник
-2

Используйте курсор обновления , выбирая все функции («*»).

Используйте IFeature.Delete () и сохраните, когда закончите.

ujjwalesri
источник
Этот вопрос требует решения JavaScript, а не ArcObjects.
Дерек Свингли
Ой ... моя ошибка! Пожалуйста, игнорируйте.
ujjwalesri