我正在使用谷歌街景全景,我会慢慢地自动平移。此外,我每隔30秒更新一次位置,并用新的全景替换当前的全景
我遇到的问题是,经过一段时间后,性能下降,我收到消息"too many active webgl contexts..."
如何在制作新版本之前删除/发布/清除google streetview pano(及其webgl上下文)?
我尝试只调用new google.maps.StreetViewPanorama(document.getElementById('streetview')
一次(全局)重用现有的上下文,然后在我的函数中更新它。这确实摆脱了错误并且只要我没有平移就可以工作 - 但如果我这样做,新旧街景混合在一起并随机闪烁。
此外,我尝试在重新使用之前清除div层,但这似乎不会释放webgl上下文。
function renderStreeview() {
var streetViewService = new google.maps.StreetViewService();
var panorama = new google.maps.StreetViewPanorama(document.getElementById('streetview'), { disableDefaultUI: true, showRoadLabels: false} );
streetViewService.getPanorama({ location: destination, radius: 10 }, processSVData);
function processSVData(data, status) {
panorama.setPano(data.location.pano);
var panoheading = 270;
setInterval(function(){ // pano panning animation
panorama.setPov({
heading: panoheading,
pitch: 3,
zoom: 2,
});
panoheading = (panoheading + 0.06); // panning speed
}, 50); // panning framerate (20 fps)
panorama.setVisible(true);
}
}