在OpenLayers 3中添加多个图层

时间:2015-10-18 22:08:27

标签: openlayers-3

我通过依次分别从多个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"被创造?有没有办法解决它们来自哪个数据集的层和功能?

1 个答案:

答案 0 :(得分:1)

是的,您正在为makeLineString的每次调用创建一个新的源(具有单个功能)和一个新层。

您通常希望将给定数据集中的所有要素放入相同的源(因此也是同一层)。最常见的方法是配置一个代表远程数据集的urlformat的源。

将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
  })
});