Управление векторным масштабированием плитки - PullRequest
0 голосов
/ 26 июня 2019

Есть ли способ определить переменную {z} в части векторных плиток сценария на лету на основе масштабирования? Я хочу определить разные числа для каждого увеличения, чем по умолчанию mapbox {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();
   });

Должен быть лучший способ сделать это ...

Я также пробовал это: Рекомендуемый способ переключения URL-адресов тайлов в mapbox-gl-js И видел это: https://github.com/mapbox/mapbox-gl-js/issues/2941

1 Ответ

1 голос
/ 26 июня 2019

Есть ли причина, по которой вы не можете использовать transformRequest для изменения z на лету при выполнении запросов к плитке?

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

...