Установить переменную XYZ source и zoom delta в зависимости от текущего viewZoom - PullRequest
0 голосов
/ 21 октября 2019

У меня есть негеографическая карта, загружающая растровые плитки из пользовательского источника 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...