我正在使用openlayer-3进行项目。
我想在地图上以相同的程度显示大约数百张天气图像,每次都会显示每张图像。
我的想法是我为每个图像创建了每个图像层,并将它们全部添加到地图中,每次只有其中一个可见。
地图设置:
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
});
],
view: new ol.View({
center: center,
zoom: zoomLevel
}),
controls: ol.control.defaults({
attributionOptions: ({
collapsible: false
})
}),
interactions: ol.interaction.defaults({
mouseWheelZoom:false
})
});
然后我为每个图像创建了图像层并将它们添加到地图
var source = new ol.source.ImageStatic({
url: imageLink,
imageExtent: bounds,
})
layerName[layerIdx] = new ol.layer.Image({
source: source,
visible: true // false for which images not need to be visible
});
map.addLayer(layerName[layerIdx]);
当我遍历所有层(通过使用setVisible()
层)时出现问题,我观察到浏览器的使用内存(我检查了最新版本的 Chrome 和 FireFox)正在迅速增加。我检查了 100 张图片,浏览器使用量接近 10GB,尽管图片大小小于 1MB。
我也尝试在显示后删除冗余层(使用map.removeLayer(layerName[layerIdx])
),但内存并没有减少。
因此,浏览器运行缓慢,当我在智能手机上尝试时,它就崩溃了。
非常感谢任何建议或解决方案。
如果有不清楚的地方,请告诉我。
2017 年 3 月 6 日更新:我尝试使用新版本openlayer-4
,问题仍然存在。任何想法都非常感谢。