У меня есть негеографическая карта, загружающая растровые плитки из пользовательского источника XYZ. Мне нужно переключить источник XYZ и дельту между двумя шагами масштабирования (например, масштабирование колесом мыши, клавиатурой или нажатием кнопок +/-) в зависимости от текущего уровня масштабирования при дробном просмотре.
Например, вот так:
# viewZoom source {z}
-1 1.5 subdomain1 2
0 1.7 subdomain2 2
1 2.2 subdomain3 2
2 2.5 subdomain3 3
3 3.5 subdomain3 4
4 4.5 subdomain4 5
minZoom = 1.5; startZoom = 1.7
# indicating the number of zoom-ins beginning from the initial state
Мне удалось загрузить плитки из разных поддоменов с помощью tileUrlFunction.
const map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new XYZ({
tileUrlFunction: function(tileCoord) {
var subdomain;
var viewZoom = map.getView().getZoom();
if(viewZoom < 1.7) {
subdomain = 'sub1';
} else if(viewZoom < 2.2) {
subdomain = 'sub2';
// ...
}
var z = tileCoord[0];
var x = tileCoord[1];
var y = tileCoord[2];
return 'https://mytileserver.org/' + subdomain + '/' + z + '/' + x + '/' + y + '.png';
},
})
}),
],
});
Однако плитки иногда не перезагружаются из-за кэширования, и при таком подходе дельта масштабирования всегда постоянна.
Я надеюсь найти более гибкое решение. Я новичок в Openlayers, которые раньше использовали Leaflet.