Как настроить максимальный масштаб, доступный на сервере плиток? - PullRequest
1 голос
/ 27 февраля 2020

Вопрос:

Допустим, мой сервер плиток имеет только изображения плиток для масштабов 8, 9 и 10.

Когда клиент начинает с масштабирования 11, я хочу, чтобы Openlayers получал масштаб 10 (максимально доступный зум на сервере) и растянуть плитку в клиенте. Итак, я хочу, чтобы пользователь увидел что-то, хотя и с более низким качеством, даже при увеличении 11.

Возможно ли это?

Более подробное объяснение:

(Более подробное объяснение следует в если вопрос не имеет смысла)

По умолчанию, если Javascript клиент запускает fre sh с zoom 11, ничего не отображается (плохо), но если клиент запускается с zoom 10, и затем увеличивает до 11 уже извлеченные плитки масштаба 10 растягивается и отображается (намного лучше), все еще пытаясь получить плитки 11 увеличения и получая 404 с сервера.

Мой лучший была попытка установить опцию tileLoadFunction , поскольку она имеет значения [z, x, y] и, по-видимому, может установить sr c изображения плитки. Я говорю «по-видимому», потому что я не пробовал это. Проблема в том, что уменьшения значения z недостаточно, я должен также рассчитать [x, y] для нового z, что сложно, и я думаю, что мне следует избегать делать это вручную.

Здесь код для слоя:

let heatmapLayer = new TileLayer({
  visible: true,
  opacity: 0.75,
  source: new XYZ({
    tileSize: [512, 512],
    url: "http://myserver/heatmap-z{z}-x{x}-y{y}.png",
  }),
});

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете указать минимальный и максимальный уровни масштабирования, для которых подаются плитки:

  source: new XYZ({
    tileSize: [512, 512],
    url: "http://myserver/heatmap-z{z}-x{x}-y{y}.png",
    minZoom: 8,
    maxZoom: 10,
  }),

Для других разрешений вид будет увеличивать или уменьшать плитки

...