Openlayers 3 下载后将geoJson文件的内容添加到矢量层

Openlayers 3 下载后将geoJson文件的内容添加到矢量层,openlayers-3,geojson,Openlayers 3,Geojson,我想从服务下载geoJson格式的功能,然后将其中的功能添加到地图上的新图层。我可以下载这些功能。好吧,我一直在想下载后如何将它们添加到地图中。 我不想让OL直接从url读取文件,正如我能找到的每个示例中所示,因为我想更多地控制何时下载功能,或者如果由于某种原因下载失败,该怎么办。 我正在尝试(数据包含我的geoJson特性集合): 这会导致ol库中的某个地方出错,显然ol功能类型与geoJson功能不同,它需要一个getId()函数。 我还尝试将数据作为一个整体添加: features: da

我想从服务下载geoJson格式的功能,然后将其中的功能添加到地图上的新图层。我可以下载这些功能。好吧,我一直在想下载后如何将它们添加到地图中。 我不想让OL直接从url读取文件,正如我能找到的每个示例中所示,因为我想更多地控制何时下载功能,或者如果由于某种原因下载失败,该怎么办。 我正在尝试(数据包含我的geoJson特性集合):

这会导致ol库中的某个地方出错,显然ol功能类型与geoJson功能不同,它需要一个getId()函数。 我还尝试将数据作为一个整体添加:

features: data,
这根本没有视觉效果。
我该怎么做呢?

你说得对,OpenLayer功能不是GeoJSON功能对象。要将GeoJSON转换为OpenLayers功能,请使用
ol.format.GeoJSON
readFeatures
方法

使用示例代码的其余部分:

var nwLayer = new ol.layer.Vector({
    title: 'My Title',
    source: new ol.source.Vector({
        features: (new ol.format.GeoJSON()).readFeatures(data)
    }),
    style: new ol.style.Style({
        image: new ol.style.Circle({
            radius: 7,
            fill: new ol.style.Fill( { color: "yellow" } )
        })
    })
});
map.addLayer(nwLayer);

没错,OpenLayer功能不是GeoJSON功能对象。要将GeoJSON转换为OpenLayers功能,请使用
ol.format.GeoJSON
readFeatures
方法

使用示例代码的其余部分:

var nwLayer = new ol.layer.Vector({
    title: 'My Title',
    source: new ol.source.Vector({
        features: (new ol.format.GeoJSON()).readFeatures(data)
    }),
    style: new ol.style.Style({
        image: new ol.style.Circle({
            radius: 7,
            fill: new ol.style.Fill( { color: "yellow" } )
        })
    })
});
map.addLayer(nwLayer);

太好了,谢谢。我在Vector层名称空间中寻找这样的函数,但我没有想到它可以在GeoJson格式名称空间中找到。作为一名新手,我对图书馆和文档的广度有点不知所措。我花了更多的时间,因为数据本身还有其他问题。太好了,谢谢。我在Vector层名称空间中寻找这样的函数,但我没有想到它可以在GeoJson格式名称空间中找到。作为一名新手,我对图书馆和文档的广度有点不知所措。我花了更多的时间,因为数据本身还有其他问题。