Ich versuche, Features zu meiner OpenLayers-Map hinzuzufügen, indem ich einen öffentlich zugänglichen WFS-Server abfrage, der GML-Daten bereitstellt.Hinzufügen von Vektordaten - GML-Format mit WFS-Transport (möglicher Fehler?)
// 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();
Hier ist ein CodePen mit dem Bug demonstriert.
http://codepen.io/anon/pen/yamOEK
Hier können Sie sich in eine einzelne HTML-Datei verpackt herunterladen: https://drive.google.com/open?id=0B6L3fhx8G3H_cmp1d3hHOXNKNHM
Ich kann erfolgreich eine ganze Feature Sammlung mit mehreren Funktionen in meine Variable xmlDoc herunterladen, einen gültigen Typnamen verwendet wird. Wenn ich jedoch format.ReadFeatures (xmlDoc) verwende, scheint der OpenLayers GML-Format-Parser nur ein einzelnes Feature aus der Feature-Sammlung zu extrahieren, während es viel mehr extrahieren sollte.
Es wäre wunderbar, wenn jemand einen Blick darauf werfen könnte, ob sie herausfinden können, ob ich etwas Dummes falsch mache oder es ein legitimer Fehler in OpenLayers3 ist. Vielen Dank für alle, die helfen können!
Cross-Posted als https://gis.stackexchange.com/q/216125/115 – PolyGeo