Видалення / видалення функції з векторного шару OpenLayers


15

У мене є шар OpenLayers з кількома векторами на ньому. Я знаю ідентифікатор функції OpenLayers (наприклад, OpenLayers.Feature.Vector_241), і я хотів би знати, як видалити цю функцію та лише цю функцію?

Я розглядав питання про видалення їх усіх, а потім перебираю через масив, щоб перемалювати їх, але це здається трохи неелегантним і довго звивистим.

Я спробував різні версії наступного коду:

layer.removeFeatures( featureID );

І

layer.removeFeatures( [featureID] );

І

layer.removeFeatures( {feature : featureID });

І т.д. ...

Вся допомога вітається!

Спасибі

С

Відповіді:


20

Я не думаю, що OpenLayers здатний видалити функцію, надавши featureID. Схоже, він може видалити функції лише за допомогою надання функції або масиву функцій:

layer.removeFeatures(featureObject);

Але ви можете замість цього спершу знайти функцію, а потім видалити знайдену функцію:

layer.removeFeatures(layer.getFeatureById(featureID));

Або подібне, якщо це не є OpenLayers FeatureID

layer.removeFeatures(layer.getFeatureBy('myId', myID));

Мені подобається мислення! Проблеми полягають у тому, що оператор "layer.getFeatureById (featureID))" повертає нуль, і тому RemoveFeature () не працює. Я на 100%, що я маю право FeatureID, хоча .... більше думок?
CatchingMonkey

1
Почешіть це. Я використовував неправильну функціюID. Я використовую ваш другий приклад, і він працює чудово. Хороший!
CatchingMonkey

5

Це працювало для мене:

*layer.removeFeatures(featureObject);*

Але я отримав цю функцію як глобальну змінну, можливо, в інших випадках вам слід спробувати зберегти ідентифікатор функції для пошуку, щоб видалити її.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.