问题
使用Leaflet.wms.js插件,我只需单击它们就可以显示有关 WMS 图层的信息(使用 GetFeatureInfo)。问题是地理服务器仅以纯文本形式提供数据,如下图所示,这是一团糟。
因此,我想过滤 GetFeatureInfo 查询的结果,以便仅显示有用的信息。我写了一堆 JavaScript 行,巫婆过滤<div>
包含 GetFeatureInfo 请求的结果。
var GetFeatureInfo = document.getElementsByClassName("leaflet-popup-content")[0].innerHTML;
tipo = GetFeatureInfo.split(/'/)[21];
legenda = GetFeatureInfo.split(/'/)[27];
document.getElementsByClassName("leaflet-popup-content")[0].innerHTML = tipo + ":<br/>PERICOLOSITÀ " + legenda;
我试图在脚本女巫调用和配置地图的底部添加这些行,但它没有用。我想这些行没有在正确的时刻执行。
解决方案
感谢Sebastian Schulz,我设法过滤了 GetFeatureInfo 查询的结果。我们需要扩展L.WMS.Source
类并使用钩子编辑类在弹出窗口中显示 GetFEatureInfo 的方式showFeatureInfo
。像这样:
var CleanInfoSource = L.WMS.Source.extend({
'showFeatureInfo': function(latlng, info){
if (!this._map){return;}
tipo = info.split(/'/)[21];
legenda = info.split(/'/)[27];
info = tipo + ":<br/>PERICOLOSITÀ " + legenda;
this._map.openPopup(info, latlng);
}
});
var minambPAI = new CleanInfoSource("http://wms.pcn.minambiente.it/ogc?map=/ms_ogc/WMS_v1.3/Vettoriali/PAI_pericolosita.map",{
format: "image/png",
transparent: true,
attribution: "<a href='http://www.pcn.minambiente.it'>Ministero dell’Ambiente</a>",
info_format: "text/plain"
}
);
正如塞巴斯蒂安所说,这种方法(除其他外)在文档中。而且我还发现钩子语法在leaflet.wms.js脚本中。RTFM 我猜... :)