控制矢量平铺缩放

时间:2019-06-26 02:38:09

标签: mapbox mapbox-gl-js

有什么方法可以根据缩放动态地在脚本的矢量切片部分中定义{z}变量?我要为每个缩放定义与默认映射框{z}不同的数字:

  map.addSource('PWS', {
    type: 'vector',
    tiles: ['//features.mvt?x={x}&y={y}&z={z}&apiKey={akey}&tile-size=512&time='+time[0]+'&time='+time[1]+'&time='+time[2]+'&time='+time[3]+'&stepped=true'],
    tileSize: 512,
   });

我已经尝试过使用这种方法,并且效果不错,但是使用缓存的图块却很难...

    map.on('zoomend', function() {
    zm = map.getZoom();
    if (zm > 0 && zm < 2){
      zoomM = 4;
    }
    else if (zm >= 2 && zm < 3){
      zoomM = 4;
    }
    else if (zm >= 3 && zm < 4){
      zoomM = 4;
    }
    else if (zm >= 4 && zm < 5){
      zoomM = 4;
    }
    else if (zm >= 5 && zm < 6){
      zoomM = 5;
    }
    else if (zm >= 6 && zm < 7){
      zoomM = 7;
    }
    else if (zm >= 7 && zm < 8){
      zoomM = 8;
    }
    else if (zm >= 8 && zm < 9){
      zoomM = 9;
    }
    else if (zm >= 9 && zm < 10){
      zoomM = 10;
   }
   else if (zm >= 10 && zm < 11){
     zoomM = 11;
   }
   else {
      zoomM = 12;
   }
   console.log(zoomM,zm);
   const source = map.getSource('PWS');
   source.tiles = ['//features.mvt?x={x}&y={y}&z='+zoomM+'&apiKey={akey}&tile-size=512&time='+pwstime[0]+'&time='+pwstime[1]+'&time='+pwstime[2]+'&time='+pwstime[3]+'&stepped=true'];
   map.style.sources['PWS'].reload();
   });

必须有一个更好的方法来做到这一点...

我也尝试过这样做:Recommended way to switch tile urls in mapbox-gl-js 并看到了这个:https://github.com/mapbox/mapbox-gl-js/issues/2941

1 个答案:

答案 0 :(得分:1)

有没有理由不能在发出平铺请求时使用transformRequest即时更改z?

https://www.mapbox.com/mapbox-gl-js/api/