有什么方法可以根据缩放动态地在脚本的矢量切片部分中定义{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
答案 0 :(得分:1)
有没有理由不能在发出平铺请求时使用transformRequest即时更改z?