Я разрешаю пользователю рисовать объекты, а в drawend мне нужно сделать запрос к моему сервису WFS, чтобы вернуть объекты.
Я могу заставить WFS возвращать данные на основе экстента, используя:
let vectorSource = new VectorSource({
format: new GeoJSON(),
url: function(extent) {
return 'https://example/wfs' +
'?key=key' +
'&SERVICE=WFS' +
'&REQUEST=GetFeature' +
'&TYPENAMES=data_point' +
'&SRSNAME=urn:ogc:def:crs:EPSG::27700' +
'&BBOX=' + extent.join(',') + ',urn:ogc:def:crs:EPSG::27700';
},
strategy: bboxStrategy
});
Однако я не могу отобразить эти функции, несмотря на внедрение этого источника в слой и слоя на карту.
Я могу получить все функции для отображения, используя что-то вроде:
fetch('example/wfs?key=key', {
method: 'POST',
body: new XMLSerializer().serializeToString(featureRequest)
}).then(function(response) {
return response.text();
}).then(function(gml) {
console.log(gml);
let features = new GML().readFeatures(gml);
vectorSource.addFeatures(features);
map.getView().fit(vectorSource.getExtent());
});
Однако я не могу на всю жизнь решить, как ограничить данные, запрошенные в этом запросе, ограничивающей рамкой, скажем, с четырьмя координатами.
Потенциально это может быть безграничная заостренная геометрия, которая будет действовать как формочка для печенья для отображаемых данных.
Мои поиски не дали результатов.
format: new GeoJSON()
потребуется&outputFormat=application/json
в URL-адресе (и сервер, который его поддерживает). В противном случаеformat: new WFS()
должно быть достаточно, если и представление, и данные имеют формат EPSG:27700. - person Mike   schedule 13.07.2019