我通过依次分别从多个GeoJSON功能加载数组multipointCoords来填充OpenLayer 3功能。每次加载GeoJSON功能时,我都会重用以下函数:
function makeLineString(multipointCoords) {
var trackSource = new ol.source.Vector();
var lineString = new ol.geom.LineString([ // create a linestring geometry from the GeoJSON data for the tracks
ol.proj.fromLonLat(multipointCoords[0][0])
]);
var trackFeature = new ol.Feature({ // create a feature with the linestring geometry
geometry: lineString
});
trackSource.addFeature(trackFeature); // add the feature to the sourc
var trackLayer = new ol.layer.Vector({ // create a layer with that source
source: trackSource
});
map.addLayer(trackLayer); // add the layer to the map
};
我是否将所有功能加载到同一层或多个" trackLayers"被创造?有没有办法解决它们来自哪个数据集的层和功能?
答案 0 :(得分:1)
是的,您正在为makeLineString
的每次调用创建一个新的源(具有单个功能)和一个新层。
您通常希望将给定数据集中的所有要素放入相同的源(因此也是同一层)。最常见的方法是配置一个代表远程数据集的url
和format
的源。
将GeoJSON文件中的所有要素加载到同一来源并将其显示在official examples:
的单个图层中的示例var vector = new ol.layer.Vector({
source: new ol.source.Vector({
url: 'data/geojson/countries.geojson',
format: new ol.format.GeoJSON(),
wrapX: false
})
});