У меня есть приложение с большой картой, поэтому, чтобы быть репрезентативным, мне нужно будет предоставить только кусок кода. Итак, это то, как я стараюсь, чтобы удалить все слои с карты:Невозможно удалить все слои с карты
map.getLayers().forEach(function (layer) {
map.removeLayer(layer);
});
//map.getOverlays().clear(); <-- also tried this, but to no effect
И у меня есть некоторое случайное поведение - иногда все слои удаляются, а иногда нет. Это полная случайность, поэтому нет никакой гарантии, что вы сможете воспроизвести эту проблему. Поэтому мне может быть достаточно, чтобы я знал концептуально, почему это может произойти.
РЕШЕНИЕ
Это очевидно OL3 ошибка, потому что если я цикл и удалить только два раза, то он начинает работать:
map.getLayers().forEach(function (layer) {
map.removeLayer(layer);
});
//for some crazy reason I need to do it twice.
map.getLayers().forEach(function (layer) {
map.removeLayer(layer);
});
Вероятно, это не ошибка, и есть некоторые секретный метод, который позволяет очистить карту. Но я не знаю об этом.
Это приводит к такому же поведению. И я не вижу сообщений об ошибках внутри блока catch. – Jacobian
Использует внутренние свойства карты. Никогда не делай этого! – ahocevar