Удалить / Удалить объект из векторного слоя OpenLayers

15

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

Я рассмотрел удаление их всех, а затем цикл по массиву, чтобы перерисовать их, но это выглядит немного не элегантно и долго затягивается.

Я пробовал различные версии следующего кода:

layer.removeFeatures( featureID );

И

layer.removeFeatures( [featureID] );

И

layer.removeFeatures( {feature : featureID });

И т.д...

Любая помощь приветствуется!

Благодарность

С

CatchingMonkey
источник

Ответы:

20

Я не думаю, что OpenLayers способен удалить функцию, предоставляя featureID. Кажется, что он может удалять только функции, предоставляя функцию или массив функций:

layer.removeFeatures(featureObject);

Но вместо этого вы можете сначала найти функцию, а затем удалить найденную функцию:

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

Или аналогично, если это не OpenLayers FeatureID у вас есть, то

layer.removeFeatures(layer.getFeatureBy('myId', myID));
Чау
источник
Мне нравится думать! Проблема заключается в том, что оператор layer.getFeatureById (featureID)) возвращает значение null, и поэтому метод removeFeature () не работает. Я на 100%, что у меня есть правильные FeatureIDs, хотя .... есть еще мысли?
CatchingMonkey
1
Сотрите это. Я использовал неправильный FeatureID. Я использую ваш второй пример, и он отлично работает. Хороший!
CatchingMonkey
5

Это сработало для меня:

*layer.removeFeatures(featureObject);*

Но у меня есть функция как глобальная переменная, может быть, в других случаях вы должны попытаться сохранить идентификатор функции для поиска, чтобы удалить ее.

Gorloki
источник