Geoserver JSON 到 Tabulator
Geoserver JSON to Tabulator
我正在研究 OpenLayers 和 Geoserver。
当用户单击一个功能时,我有一个已经创建的制表符 table 来获取功能信息数据。
我的问题是我需要将 Geoserver 的 html 响应转换为 JSON。我该怎么做?
这是 Geoserver 的响应
<table class="featureInfo">
<caption class="featureInfo">l1Data</caption>
<tbody><tr>
<th>id</th>
<th>sensor</th>
<th>timestamp</th>
<th>reliability</th>
</tr>
<tr>
<td>16021</td>
<td>Basic</td>
<td>Sep 18, 2020 12:05:02 PM</td>
<td>0.929717403858748</td>
</tr>
</tbody>
</table>
制表符已设置为:
table = new Tabulator("#eventtable", {
//height:"311px",
layout:"fitColumns",
columns:[
{title:"ID", field:"id", visible:false},
{title:"Sensor", field:"sensor", sorter:"string"},
{title:"Last Detection", field:"timestamp", sorter:"date"},
{title:"Reliability", field:"reliability", sorter:"number"},
],
});
已编辑
我发现我可以有一个 application/json 响应,但我不能放入 Tabulator。地图上的代码点击:
map.on('singleclick', function (evt) {
var viewResolution = /** @type {number} */ (view.getResolution());
var url = wmsSource.getFeatureInfoUrl(
evt.coordinate, viewResolution, 'EPSG:3857',
{ 'INFO_FORMAT': 'application/json' });
if (url) {
fetch(url)
.then(function (response) { return response.text(); })
.then(function (html) {
var test1 = JSON.parse(html);
var test2 = test1.features[0].properties;
table.setData(test2);
});
}
});
错误是:
tabulator.min.js:2 Data Loading Error - Unable to process data due to invalid data type
Expecting: array
Received: object
您不需要弄清楚如何转换它,只需让 GeoServer 向您return 提供 JSON 的信息。您可以通过将 info_format
参数设置为 application/json
来实现。 GeoServer manual 给出了可用于控制响应的所有可能参数和格式的完整详细信息。
我正在研究 OpenLayers 和 Geoserver。 当用户单击一个功能时,我有一个已经创建的制表符 table 来获取功能信息数据。 我的问题是我需要将 Geoserver 的 html 响应转换为 JSON。我该怎么做?
这是 Geoserver 的响应
<table class="featureInfo">
<caption class="featureInfo">l1Data</caption>
<tbody><tr>
<th>id</th>
<th>sensor</th>
<th>timestamp</th>
<th>reliability</th>
</tr>
<tr>
<td>16021</td>
<td>Basic</td>
<td>Sep 18, 2020 12:05:02 PM</td>
<td>0.929717403858748</td>
</tr>
</tbody>
</table>
制表符已设置为:
table = new Tabulator("#eventtable", {
//height:"311px",
layout:"fitColumns",
columns:[
{title:"ID", field:"id", visible:false},
{title:"Sensor", field:"sensor", sorter:"string"},
{title:"Last Detection", field:"timestamp", sorter:"date"},
{title:"Reliability", field:"reliability", sorter:"number"},
],
});
已编辑 我发现我可以有一个 application/json 响应,但我不能放入 Tabulator。地图上的代码点击:
map.on('singleclick', function (evt) {
var viewResolution = /** @type {number} */ (view.getResolution());
var url = wmsSource.getFeatureInfoUrl(
evt.coordinate, viewResolution, 'EPSG:3857',
{ 'INFO_FORMAT': 'application/json' });
if (url) {
fetch(url)
.then(function (response) { return response.text(); })
.then(function (html) {
var test1 = JSON.parse(html);
var test2 = test1.features[0].properties;
table.setData(test2);
});
}
});
错误是:
tabulator.min.js:2 Data Loading Error - Unable to process data due to invalid data type
Expecting: array
Received: object
您不需要弄清楚如何转换它,只需让 GeoServer 向您return 提供 JSON 的信息。您可以通过将 info_format
参数设置为 application/json
来实现。 GeoServer manual 给出了可用于控制响应的所有可能参数和格式的完整详细信息。