我正在尝试通过查询提供 GML 数据的公开可用的 WFS 服务器来向我的 OpenLayers 地图添加功能。
// initalize the map
var map = new ol.Map({
layers: [
new ol.layer.Tile({
// OpenLayers public map server
source: new ol.source.OSM()
}),
],
target: 'map',
view: new ol.View({
// center on Murica
center: [-10997148, 4569099],
zoom: 4
})
});
var xmlhttp = new XMLHttpRequest();
// execute this once the remote GML xml document has loaded
xmlhttp.onload = function() {
console.log("GML XML document retrieved. executing onload handler:");
var format = new ol.format.GML3();
var xmlDoc = xmlhttp.responseXML;
console.log("you will see multiple features in the xml: ");
console.log(xmlDoc);
// Read and parse all features in XML document
var features = format.readFeatures(xmlDoc, {
featureProjection: 'EPSG:4326',
dataProjection: 'EPSG:3857'
});
console.log("for some reason only a single feature will have been added: ")
console.log(features);
console.log("Why is this?");
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
format: format
})
});
// Add features to the layer's source
vector.getSource().addFeatures(features);
map.addLayer(vector);
};
// configure a GET request
xmlhttp.open("GET", "http://geoint.nrlssc.navy.mil/dnc/wfs/DNC-WORLD/feature/merged?version=1.1.0&request=GetFeature&typename=DNC_APPROACH_LIBRARY_BOUNDARIES&srsname=3857",
true);
// trigger the GET request
xmlhttp.send();
这是一个带有错误演示的 CodePen。
http://codepen.io/anon/pen/yamOEK
在这里,您可以将其下载到单个 HTML 文件中: https ://drive.google.com/open?id=0B6L3fhx8G3H_cmp1d3hHOXNKNHM
我可以使用有效的类型名成功地将具有多个功能的整个功能集合下载到我的变量 xmlDoc 中。但是,当我使用 format.ReadFeatures(xmlDoc) 时,OpenLayers GML 格式解析器似乎只从特征集合中提取单个特征,而它应该提取更多。
如果有人可以看一看,看看他们是否能弄清楚我做错了什么愚蠢的错误,或者这是 OpenLayers3 中的一个合法错误,那就太好了。非常感谢任何能够提供帮助的人!