Я использую OpenLayers 3 (v3.20). То, что я хочу достичь, - это просто удалить все функции из определенного слоя. Я вижу, что есть clear метод и документация говорит, чтоисточник чистый BUG в OpenLayers 3
ясный (opt_fast)
удалить все компоненты из источника.
Однако, когда я применяю его к моему источнику слоя примерно так:
layer.getSource().clear();
Я вижу мерцание (функции удаляются), а затем я вижу запрос на сервер, так что функции перезагружается снова. Таким образом, либо документация неполна, либо есть ошибка.
Я также попытался удалить такие функции, как так:
features = source.getFeatures();
for (i = 0; i < features.length; i += 1) {
source.removeFeature(features[i]);
}
Но это работает очень странно. Если, например, у меня есть четыре функции, когда я цикл один раз, он удаляет только две функции, и когда я цикл дважды, одна дополнительная функция удаляется. В общем, я должен три раза (что действительно НЕ СУХОЙ), чтобы удалить все функции. Я действительно удивляюсь, почему это и как я могу это исправить. Благодаря!
Когда вы смотрите через функции по индексу и удалить номер 1, а затем номер 2 становится новым номером 1. Таким образом, для каждого вы удаляете, вы пропускаете один, то есть только половина из них удаляются. Чтобы обойти это, переверните цикл и вместо этого выполните 'for (var i = features.length -1; i> = 0; i -)'. –
@ Карл-Йохан Sjögren. Хороший совет! Спасибо, сэр! – Jacobian
'layer.clear()' запускает слой карты для перезагрузки после ее очистки. Кстати, это использование функции векторного загрузчика, которая может обойти перезагрузку, если вы устанавливаете флаг при использовании '.clear()'. – GoinOff