创建一个图块服务器,以便 Leaflet 忽略其中的空图块
Creating a tile server so that Leaflet ignores empty tiles from it
我正在根据每个图块的 XYZ
坐标为 return TMS 图块开发网络服务。
一切正常,但对于某些图块我没有数据,所以我需要 return 一个空图块。我在想传单中是否有任何已定义的 HTTP 响应状态代码,这样我就可以 return HTTP 代码和传单停止呈现该拼贴,而不是 return 空磁贴。
我正在考虑 returning 404,但它会登录到用户的浏览器中,我不想要这个解决方案。
Leaflet handles tile load/error at this specific bit of code:
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
instance triggers an error
event, leaflet will trigger the fallback behaviour and try to load errorTileUrl
进入失败的瓦片。
Leaflet 不 关心磁贴失败的原因,只要 Web 浏览器报告失败即可。根据 https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement#Errors ,这可能发生在很多情况下,包括:
- A
40x
或 50x
HTTP 错误代码
- 超时
- 错误或未知的图像格式(例如
.webp
in unsupported browsers)
- 试图加载不是图像的东西。这发生在 WMS 服务中,其中 WMS 服务器 return 错误封装在某些 XML 文档中。
- ...以及更多
如果您正在开发磁贴服务器,并且不想向浏览器发送 404 HTTP 状态代码即使这是语义上正确的做法,您也可以return 任何不是图像的东西。
特别是,IMO 在语义上第二合适的事情是 204 No Content
HTTP status code 和 Content-Length
HTTP header 的值 0
。
顺便说一句,请记住,所有 网络请求都记录在网络浏览器中,拥有 404 不会对性能或可访问性产生不利影响。
我正在根据每个图块的 XYZ
坐标为 return TMS 图块开发网络服务。
一切正常,但对于某些图块我没有数据,所以我需要 return 一个空图块。我在想传单中是否有任何已定义的 HTTP 响应状态代码,这样我就可以 return HTTP 代码和传单停止呈现该拼贴,而不是 return 空磁贴。
我正在考虑 returning 404,但它会登录到用户的浏览器中,我不想要这个解决方案。
Leaflet handles tile load/error at this specific bit of code:
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
instance triggers an error
event, leaflet will trigger the fallback behaviour and try to load errorTileUrl
进入失败的瓦片。
Leaflet 不 关心磁贴失败的原因,只要 Web 浏览器报告失败即可。根据 https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement#Errors ,这可能发生在很多情况下,包括:
- A
40x
或50x
HTTP 错误代码 - 超时
- 错误或未知的图像格式(例如
.webp
in unsupported browsers) - 试图加载不是图像的东西。这发生在 WMS 服务中,其中 WMS 服务器 return 错误封装在某些 XML 文档中。
- ...以及更多
如果您正在开发磁贴服务器,并且不想向浏览器发送 404 HTTP 状态代码即使这是语义上正确的做法,您也可以return 任何不是图像的东西。
特别是,IMO 在语义上第二合适的事情是 204 No Content
HTTP status code 和 Content-Length
HTTP header 的值 0
。
顺便说一句,请记住,所有 网络请求都记录在网络浏览器中,拥有 404 不会对性能或可访问性产生不利影响。