2015-03-31 46 views
1

我想在的OpenLayers讀取GML 3.4.0文件與此代碼問題讀GML文件(而不是重投影)

var from = ol.proj.get("EPSG:4326"); 
var to = ol.proj.get("EPSG:3857"); 
var gml = new ol.source.StaticVector({ 
    format: new ol.format.GML2({dataProjection: from, 
           featureProjection: to}), 
    projection: 'EPSG:3857', 
    url: 'test_4326.gml' 
}); 
var vectorLayer = new ol.layer.Vector({ 
    source: gml 
}); 
var map; 
function init(){ 
    map = new ol.Map({ 
     layers: [vectorLayer], 
     target: 'map', 
     view: new ol.View({ 
      center: [0, 0], 
      zoom: 2 
     }) 
    }); 
} 

與KML或以GeoJSON(改變ol.format和刪除相關參數正常工作),但沒有與GML文件(也沒有ol.format.GML2中的參數),我做了一些嘗試與不同的gml文件,但沒有任何工作。在閱讀階段似乎座標不重新投影。 閱讀GMl文件的正確方法是哪一種?

測試是在http://kili.aspix.it/ol/testGML.html

回答

1

到目前做到這一點的方法是使用正常ol.source.Vector,手動使用XHR獲取數據並做直接解析的格式,以便您可以指定所有readFeatures函數的選項。之後,您將添加功能到源。例如:

var vector = new ol.layer.Vector({ 
    source: new ol.source.Vector() 
}); 
var format = new ol.format.GML2(); 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET", "gml.xml", true); 
xmlhttp.onload = function() { 
    var xmlDoc = xmlhttp.responseXML; 
    var features = format.readFeatures(xmlDoc, { 
    featureProjection: 'EPSG:3857', 
    dataProjection: 'EPSG:4326' 
    }); 
    vector.getSource().addFeatures(features); 
}; 
xmlhttp.send(); 
+0

不再與的OpenLayers 3.5.0 AssertionError的工作原理:斷言失敗:objectStack應該是數組的數組 – 2015-05-12 11:10:19