geoserver / leaflet / getfeatureinfo

时间:2018-02-26 14:55:57

标签: javascript leaflet geoserver getfeatureinfo

我有一个非常简单的问题,到目前为止我找不到解决方案。 我有一个传单,通过L.TileLayer.BetterWMS.js(https://gist.github.com/rclark/6908938)从Geoserver获取数据。 当用户单击图像时,获取要素数据。在WMS中,每次只有一行只有一个值。我想将此值赋给变量并解析为PHP。怎么做? 下面是我得到的传单和桌子的图片。

Geoserver getFeatureInfo

我想将值188解析为变量。

提前致谢!

3 个答案:

答案 0 :(得分:0)

如果您想要访问应在application / json或application / xml中请求数据的值并对其进行解析,那么您的响应将以text / html的形式返回。

答案 1 :(得分:0)

伙计们,谢谢,我找到了解决方案。 您可以创建一个新的DomParser并获取一个字符串。在创建元素并解析之前获得的html之后,您将传递变量,如:

el.getElementsByTagName('td')[1].innerHTML;

就是这样。 完整代码:

var doc = (new DOMParser()).parseFromString(data, "text/html"); 
if (doc.body.innerHTML.trim().length > 0)
showResults(err, evt.latlng, data);
var el = document.createElement( 'html' );
el.innerHTML = data;
var stra = el.getElementsByTagName('td')[1].innerHTML;

再次感谢!

答案 2 :(得分:0)

我还有其他解决方案 您需要先将L.TileLayer.BetterWMS.js中的text / html更改为application / json,然后添加:

$("#yourId").text(data.features[0].properties.YourVar)

所以您终于得到了:

getFeatureInfo: function(evt) {
// Make an AJAX request to the server and hope for the best
var url = this.getFeatureInfoUrl(evt.latlng),
    showResults = L.Util.bind(this.showGetFeatureInfo, this);

$.ajax({
  url: url,
  success: function (data, status, xhr) {

    $("#yourid").text(data.features[0].properties.YourVar)


    var err = typeof data === 'string' ? null : data;
    showResults(err, evt.latlng, data);

  },
  error: function (xhr, status, error) {
    showResults(error);  
  }
});