openlayers 删除掉视口外的图层
import { intersects } from 'ol/extent'
/**
* 删除掉视口外的图层
* @param {*} map
*/
removeOutViewportLayers(map) {
var layers = map.getLayers().getArray()
const viewExtent = map.getView().calculateExtent(map.getSize())
for (let index = 0; index < layers.length; index++) {
const layer = layers[index]
const layerExtent = layer.getSource().getExtent()
if (!layerExtent) {
map.removeLayer(layer)
continue
}
const isIn = intersects(viewExtent, layerExtent)
if (!isIn) {
map.removeLayer(layer)
}
}
}