I have a big map application, so to be representative I will have to provide just a chunk of code. So, this is how I try to remove all layers from a map:
map.getLayers().forEach(function (layer) {
map.removeLayer(layer);
});
//map.getOverlays().clear(); <-- also tried this, but to no effect
And I have some random behaviour - sometimes all layers are removed, sometimes not. It's a complete randomness, so there is no guarantee, that you will be able to reproduce this issue. So, it may be enough for me to know just conceptually, why it may happen.
SOLUTION
This is obviously an ol3 bug, because if I loop and delete just twice, then it starts working:
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);
});
Probably, it's not a bug, and there is some secret method, that enables to clear the map. But I do not know about it.