Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法停止加载mapbox gl图层?_Javascript_Mapbox_Mapbox Gl Js - Fatal编程技术网

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上发布一个最小的可复制示例吗?