Leaflet 创建互动程序服务器,使传单忽略其中的空互动程序

Leaflet 创建互动程序服务器,使传单忽略其中的空互动程序,leaflet,gis,Leaflet,Gis,我正在开发一个Web服务,根据每个磁贴的XYZ坐标返回TMS磁贴 一切正常,但对于某些磁贴,我没有数据,所以我需要返回一个空磁贴。我在想,传单中是否有任何已定义的HTTP响应状态代码,这样,我就可以返回该HTTP代码,而不是返回一个空的磁贴,传单将停止呈现该磁贴 我想返回404,但它登录到用户的浏览器中,我不想要这个解决方案 传单在以下位置处理瓷砖加载/错误: 只要存在,传单将触发回退行为并尝试加载到故障磁贴中 传单不关心互动程序失败的原因,只要web浏览器报告失败。根据,这可能发生在很多情况下

我正在开发一个Web服务,根据每个磁贴的
XYZ
坐标返回TMS磁贴

一切正常,但对于某些磁贴,我没有数据,所以我需要返回一个空磁贴。我在想,传单中是否有任何已定义的HTTP响应状态代码,这样,我就可以返回该HTTP代码,而不是返回一个空的磁贴,传单将停止呈现该磁贴


我想返回404,但它登录到用户的浏览器中,我不想要这个解决方案

传单在以下位置处理瓷砖加载/错误:

只要存在,传单将触发回退行为并尝试加载到故障磁贴中

传单不关心互动程序失败的原因,只要web浏览器报告失败。根据,这可能发生在很多情况下,包括:

  • 40x
    50x
    HTTP错误代码
  • 暂停
  • 错误或未知的图像格式(例如)
  • 试图加载非图像的内容。这在WMS服务中发生,WMS服务器返回封装在某个XML文档中的错误
  • 。。。还有更多
如果您正在开发一个tile服务器,并且不想向浏览器发送404 HTTP状态码,即使这在语义上是正确的,您也可以返回任何非图像的内容

特别是,IMO在语义上最合适的第二件事是使用值为
0
Content-Length
HTTP头


顺便说一句,请记住,所有网络请求都记录在web浏览器中,使用404不会对性能或可访问性造成不利影响。

单张在以下位置处理磁贴加载/错误:

只要存在,传单将触发回退行为并尝试加载到故障磁贴中

传单不关心互动程序失败的原因,只要web浏览器报告失败。根据,这可能发生在很多情况下,包括:

  • 40x
    50x
    HTTP错误代码
  • 暂停
  • 错误或未知的图像格式(例如)
  • 试图加载非图像的内容。这在WMS服务中发生,WMS服务器返回封装在某个XML文档中的错误
  • 。。。还有更多
如果您正在开发一个tile服务器,并且不想向浏览器发送404 HTTP状态码,即使这在语义上是正确的,您也可以返回任何非图像的内容

特别是,IMO在语义上最合适的第二件事是使用值为
0
Content-Length
HTTP头


顺便说一句,请记住,所有网络请求都记录在web浏览器中,使用404不会对性能或可访问性造成损害。

查看文档类似于
TileErrorEvent
myLayer.on('tileerror',function(error,tile){console.log(error);console.log(tile);})@GrzegorzT。但这是为了查找哪个磁贴有错误,我想返回一个特定的http代码,让传单意识到此磁贴为空并停止处理该磁贴。磁贴为空意味着什么?你可以解释你的意思。@GrzegorzT。我正在使用
传单.vectorgrid
插件渲染一些点,该插件类似于常规光栅图块,但图块是矢量的。因此,有可能在某些瓷砖中没有任何点。在我目前的实现中,我很容易返回一个pbf文件,里面没有任何特性。但是我在想,如果有什么方法可以代替发送一个空的tile(没有功能),我只发送一个http代码(比如404找不到),传单认为作为一个空的tileLook在文档中类似于
TileErrorEvent
myLayer.on('tileerror',function(error,tile){console.log(error);console.log(tile);});@GrzegorzT。但这是为了查找哪个磁贴有错误,我想返回一个特定的http代码,让传单意识到此磁贴为空并停止处理该磁贴。磁贴为空意味着什么?你可以解释你的意思。@GrzegorzT。我正在使用
传单.vectorgrid
插件渲染一些点,该插件类似于常规光栅图块,但图块是矢量的。因此,有可能在某些瓷砖中没有任何点。在我目前的实现中,我很容易返回一个pbf文件,里面没有任何特性。但我在想,如果有什么方法可以代替发送一个空的tile(没有任何功能),我只发送一个http代码(比如404notfound),传单认为这是一个空的tiletile@IvanSabchez哇,这是我的答案,非常感谢。@IvanSabchez哇,这是我的答案,非常感谢。
  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));