Создание сервера листов, чтобы Leaflet игнорировал пустые листы с него - PullRequest
0 голосов
/ 17 января 2020

Я разрабатываю веб-сервис для возврата плиток TMS на основе XYZ координат каждой плитки.

Все работает нормально, но для некоторых плиток у меня нет данных, поэтому мне нужно вернуть пустую плитку. Я думал, есть ли какой-либо определенный код состояния HTTP-ответа в листовке, чтобы вместо возврата пустой плитки я мог просто вернуть этот HTTP-код и листовка перестала отображать эту плитку.

Я думал о возврате 404, но он входит в браузер пользователя, и я не хочу этого решения.

1 Ответ

2 голосов
/ 18 января 2020

Листовка обрабатывает плитку загрузки / ошибки на этот параметр c бит кода :

  var tile = document.createElement('img');

  DomEvent.on(tile, 'load', Util.bind(this._tileOnLoad, this, done, tile));
  DomEvent.on(tile, 'error', Util.bind(this._tileOnError, this, done, tile));

Пока HTMLImageElement Экземпляр запускает событие error , листовка запускает резервное поведение и пытается загрузить errorTileUrl в неисправный тайл.

Leaflet делает не не обращайте внимания на то, почему произошел сбой плитки, если веб-браузер сообщил о ее сбое. Согласно https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement#Errors это может происходить во многих ситуациях, включая:

  • A 40x или 50x HTTP-код ошибки
  • A timeout
  • Неправильный или неизвестный формат изображения (например, .webp в неподдерживаемых браузерах )
  • Попытка загрузить что-то, кроме изображения. Это происходит в сервисах WMS, где сервер WMS возвращает ошибку, инкапсулированную в каком-то документе XML.
  • ... и более

Если вы разрабатываете сервер листов, и не хотите отправлять 404 HTTP-кода состояния в браузер , даже если это семантически правильное действие , вы можете просто вернуть все, что не является изображением.

В частности, второй наиболее семантически приемлемой вещью для IMO был бы 204 No Content код состояния HTTP вместе с Content-Length заголовком HTTP, имеющим значение 0.

Кстати, имейте в виду, что все сетевые запросы регистрируются в веб-браузерах, и наличие 404-х не наносит ущерба производительности или доступности.

...