Javascript 有没有办法停止加载mapbox gl图层?
在我的应用程序中,当在混合样式地图上添加瓷砖层后,用户可以快速切换到路线图样式的地图,而无需使用前一层。若平铺层并没有开始加载,它将在路线图上呈现。 所以我需要停止加载平铺层,或者有一些侦听器,当加载层时会触发。尝试使用Javascript 有没有办法停止加载mapbox gl图层?,javascript,mapbox,mapbox-gl-js,Javascript,Mapbox,Mapbox Gl Js,在我的应用程序中,当在混合样式地图上添加瓷砖层后,用户可以快速切换到路线图样式的地图,而无需使用前一层。若平铺层并没有开始加载,它将在路线图上呈现。 所以我需要停止加载平铺层,或者有一些侦听器,当加载层时会触发。尝试使用removeLayer方法解决此问题,但没有帮助。如果Mapbox gl库中有任何解决方案,则希望避免使用setTimeout或任何异步js方法 对不起,代码是私有的。例如,我的类中有一些方法,当单击按钮时,可以从一种样式切换到另一种样式。如果是附属图层,则绘制该图层,否则将删除
removeLayer
方法解决此问题,但没有帮助。如果Mapbox gl库中有任何解决方案,则希望避免使用setTimeout
或任何异步js方法
对不起,代码是私有的。例如,我的类中有一些方法,当单击按钮时,可以从一种样式切换到另一种样式。如果是附属图层,则绘制该图层,否则将删除该图层。尝试删除和隐藏
const map = new mapboxgl.Map();
const drawLayer = (layerId: string) => {
map.addSource(`${layerId}-source`, {
'type': 'raster',
'tiles': [getTileUrl()],
'tileSize': 256
});
map.addLayer({
'id': layerId,
'type': 'raster',
'source': `${layerId}-source`,
'paint': {
'raster-opacity': opacity
}
});
};
const switchStyle = (isSatellite: boolean) => {
if (isSatellite) {
map.setOptions({
styles = 'mapbox://styles/mapbox/satellite-streets-v10'
});
drawLayer('some-layer-id');
} else {
map.setOptions({
styles = 'mapbox://styles/mapbox/streets-v11'
});
if (map.getLayer('some-layer-id')) {
map.removeLayer('some-layer-id');
map.removeSource('some-layer-id-source');
}
}
}
map.once('load', () => {
document.getElementById("switchButton").addEventListener("click", switchStyle);
});
请添加相关代码。@MurliPrajapati有一个类似于我的示例code@MurliPrajapatisry,你有什么想法吗?你能在JSFIDLE/codepen/jsbin上发布一个最小的可复制示例吗?