問題篩選的GetFeatureInfo結果(單張WMS插件)
隨着leaflet.wms.js插件,我已經成功只是通過點擊來顯示(使用的GetFeatureInfo)WMS圖層信息。問題是地理服務器僅以純文本格式提供數據,如下圖所示,這是一團糟。
因此我想過濾的GetFeatureInfo查詢的結果,以便只顯示有用信息。我寫了一堆JavaScript行,過濾包含GetFeatureInfo請求結果的<div>
。
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
類,並使用掛鉤showFeatureInfo
編輯類在彈出窗口中顯示GetFEatureInfo的方式。就像這樣:
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"
}
);
塞巴斯蒂安說,這種方法(等等)是在documentation。我還發現鉤子語法在leaflet.wms.js腳本中。 RTFM我猜... :)
謝謝你@sebastian。我試圖擴展類[如上所示](https://stackoverflow.com/q/46268753/7074472),但我得到了這樣的錯誤:'TypeError:L.WMS.source.extend不是一個函數'。 –
你可以在jsfiddle上提供一小部分代碼嗎?然後我們可以調試它。嘗試創建地圖對象並添加示例WMS圖層。 https://jsfiddle.net/ –
這是[jsfiddle](https://jsfiddle.net/xuq8zszg/2/)上的代碼,但似乎jsfiddle拒絕顯示GetFeatureInfo內容(可能是因爲它是從一個http連接而不是https,我不能改變它)。但是,它適用於[jsbin](http://jsbin.com/nupehu/edit?html,js,output)。謝謝你的幫助。 –