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 フォーマット パーサーは、フィーチャ コレクションから 1 つのフィーチャのみを抽出しているように見えますが、さらに多くのフィーチャを抽出する必要があります。
誰かが見て、私が愚かなことをしているのか、それとも OpenLayers3 の正当なバグなのかを判断できるかどうかを確認できれば素晴らしいことです。助けてくれる人に感謝します!