що є правильним способом видалення всіх функцій з FeatLayer


10

У мене є, featureLayerі я не хочу його вбивати і створювати ще одного. Я хочу видалити всі функції з поточного функціонального шару. Я виявив, що я можу використовувати applyEditsметод, але для його використання мені потрібно мати всі функції, які я хочу видалити. Хоча я не хочу зберігати їх окремо. Чи знаєте ви кращий спосіб очистити мій функціональний шар під час використання API ArcGIS Javascript?

Відповіді:


3

Використовуйте functionLayer.selectFeatures () з, як запропонував Кірк, пункт де, який поверне всі ваші функції. Після того, як ви отримаєте всі свої функції, передайте їх застосуватиEdits () як видалення.


Чи не поверне це клієнту багато функцій? Якщо це великий набір даних, він справді може бути повільним.
Кірк Куйкендалл

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

Можливо, якщо функціональний рівень не пов'язаний з жодною службою функцій, він не підтримує пункти. Як ти гадаєш?
Кирило Ликов

"якщо функціональний рівень не пов'язаний з жодною службою функцій, він не підтримує пункти" - це правильно, але якщо так, він також не підтримує редагування. З посилання API: "Якщо основний рівень ... - це служба функціональних можливостей, його функції можна редагувати", маючи на увазі, що ваш функціональний шар підключений до служби функцій
Stephen Lead

"він також не підтримує редагування" - я підтримую редагування, навіть якщо воно не пов'язане з сервісом. Ховевер, мені довелося зробити деякі обходи.
Кирило Ликов


1

Якщо ви створили функціональний рівень на стороні клієнта (немає URL-адреси на сервері), ви не можете використовувати запит із пунктом де. Мені вдалося обходити це шляхом пошуку масштабу карти та видалення всіх знайдених нами предметів. Наприклад:

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.